2012年9月22日 星期六

以perl處理ms word文件的utf8編碼問題


http://www.lemoda.net/perl/win32-ole-utf8/cp-utf8-ole.html

原文是在處理日文,不過中、韓文也適用,要訣是加上以下兩行:

use Win32::OLE 'CP_UTF8';
$Win32::OLE::CP = CP_UTF8;

順便提一下,一個起手的script可以參考
http://stackoverflow.com/questions/12070198/perl-ole-selection-property-iterating

得到script路徑的方式可參考
http://stackoverflow.com/questions/84932/how-do-i-get-the-full-path-to-a-perl-script-that-is-executing

加下以下兩行的方式比較穩定不會出錯:
use File::Basename;
my $dirname = dirname(__FILE__);

至於拜訪表格的方式,尤其是有合併的儲存格存在時,請參考
http://www.experts-exchange.com/Software/Office_Productivity/Office_Suites/MS_Office/Word/Q_27818826.html

__________________________________________________________________________

以下部分不確定,先持保留態度。為了關掉警告,會產生換行符號的轉換問題,有點不值得

常規表示法match中文時的解決方法
http://www.jeffhung.net/blog/articles/jeffhung/417/

輸出到檔案(及stdout等io設備)要做些處理,以關掉警告訊息
http://blog.wu-boy.com/2009/07/perl-with-utf-8-mode/

結果,換行的地方也會出問題

我是是接把換行字元變成 \x0d 來解決\n被轉換掉的問題

沒有留言:

張貼留言