Re: [問題] utf8下 中文 substr 要如何才能正確擷字??

看板Perl作者時間16年前 (2009/06/02 19:55), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1A9HCjZA (Perl)
文章代碼(AID): #1A9HCjZA (Perl)