作者 主題: 請教如何使用 Encode::HanConvert  (閱讀 4515 次)

0 會員 與 1 訪客 正在閱讀本文。

chienwen

  • 懷疑的國中生
  • **
  • 文章數: 37
    • 檢視個人資料
    • 線上字典
請教如何使用 Encode::HanConvert
« 於: 2006-04-12 13:24 »
請教如何使用 Encode::HanConvert

我的系統是 FreeBSD 5.3 ; 第一次學習使用 perl + CPAN
我想把 utf8 的簡體中文, 轉成 big5 的正體中文, 但是試不成功!
請教學長們, 我錯在哪兒? 謝謝您.

我的步驟如下:

1. 安裝: Encode-2.15
下載, 並解開 http://search.cpan.org/CPAN/authors/id/D/DA/DANKOGAI/Encode-2.15.tar.gz
su 之後, 執行

perl Makefile.PL
make
make test
make install

2. 安裝: Encode-HanConvert-0.31
下載, 並解開 http://search.cpan.org/CPAN/authors/id/A/AU/AUTRIJUS/Encode-HanConvert-0.31.tar.gz

perl Makefile.PL
make
make test
make install
enc2xs -C   # optional; updates Encode.pm's on-demand loading DB

exit 離開 su.

3. 執行 perl

>perl ttt.pl
>

無錯誤訊息, 但並無法正確產生 big5 編碼的文件.

ttt.pl code 如下:
代碼: [選擇]

#!/usr/bin/perl

&test() ;

sub test {

use Encode ;
use Encode::HanConvert ;

open TXT, ">ttt.txt" ;

$w_def = "分数" ;  # utf8 simple chinese

$w_def = simp_to_big5($w_def) ;

print TXT "$w_def\n" ;

close (TXT) ;
}


產生錯誤編碼的文件, 內容如下:
代碼: [選擇]

?�?佅X
:D

chienwen

  • 懷疑的國中生
  • **
  • 文章數: 37
    • 檢視個人資料
    • 線上字典
請教如何使用 Encode::HanConvert
« 回覆 #1 於: 2006-04-13 02:00 »
我找到答案了!!

http://search.cpan.org/~dankogai/Encode-2.15/Encode.pm 有提到:
perl 的字串是以 character (0 到 2**32-1) 為單位, 不是以 byte, octet (0 到 256) 為單位.
所以轉換字串之前, 須先 decode.

正確的程式碼為:
代碼: [選擇]

#!/usr/bin/perl

&test() ;

sub test {

use Encode ;
use Encode::HanConvert ;

open TXT, ">ttt.txt" ;

$w_def = "体重" ;  # utf8 simple chinese

$w_def = trad_to_big5( simp_to_trad( decode( "utf8", $w_def ) ) ) ;

print TXT "$w_def\n" ;

close (TXT) ;
}



值得一提的, 以下這兩種方法, 看似相同, 其實不同.
代碼: [選擇]

$w_def = simp_to_big5( decode( "utf8", $w_def ) ) ;     # 會轉出 big5 編碼的簡體字 (如:体)

$w_def = trad_to_big5( simp_to_trad( decode( "utf8", $w_def ) ) ) ;     # 正確轉出 "體"
:D