Re: [問題] utf8下 中文 substr 要如何才能正確擷字??
※ 引述《bmyone (Y)》之銘言:
: 我有試過先加use utf8;
: 不過輸出的結果還是會有錯誤
: 最後一個字可能會變亂碼之類的
: 請問各位前輩們,有什麼比較好的做法嗎?
可以使用 Encode 來處理,這樣計算長度的單位是用 character 而不是 byte。
建議 #perldoc perlunitut 閱讀一下說明。
或參考下面的程式看看
----------------------------------------------------------------------
#!/usr/bin/perl
use strict;
use warnings;
use Encode;
use Data::Dump;
my $str = "123漢字abc一二三";
print 'length - ', length($str), " bytes\n";
print 'length - ', length(decode("utf-8", $str)), " characters\n";
print 'substr($str, 0, 2) - ', substr($str, 0, 2), "\n";
print 'substr($str, 0, 3) - ', substr($str, 0, 3), "\n";
print 'substr($str, 0, 4) - ', substr($str, 0, 4), "\n";
print 'substr($str, 0, 5) - ', substr($str, 0, 5), "\n";
print 'substr($str, 0, 6) - ', substr($str, 0, 6), "\n";
print 'substr($str, 0, 4) - ', encode("utf-8",
substr(decode("utf-8", $str), 0, 4)
), "\n";
print Data::Dump->dump($str), "\n";
print Data::Dump->dump(decode("utf-8", $str)), "\n";
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.64.233.69
推
06/03 11:20, , 1F
06/03 11:20, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章