無窮 i ラボ Blog

知的ネット社会、知そのもの、機械との共生、プログラミングに関して。

 
 


UTF-8 で書かれたファイル hogehoge.txt から、バッチファイル(.bat)に書かれた以下のコマンドで jcode.pl を使い、内容を Shift JIS にエンコードしファイル hogehoge_sjis.txt を作成する処理を実施していたところ、変換できない文字が ¥x{...} に変換された。

perl -Mencoding=utf-8,STDOUT,shiftjis -pe1 < hogehoge.txt > hogehoge_sjis.txt

そして、他のプログラムによる処理を経て、Javascriptのファイルに ¥x{...} が書き込まれてしまい、¥マークによるエスケープが原因なのか、Javascriptが走らないという事象が発生した。

後で分かったことだが、

perl -Mencoding=utf-8,STDOUT,cp932 -pe1 < hogehoge.txt > hogehoge_sjis.txt

とするだけで、¥x{...} への変換はされなくなった。なお、cp932 は、Shift JIS と(ほぼ)同じである。

しかし、今回はレガシーな jcode.pl ではなく、現在のスタンダードらしい Encode.pm を使った処理に変更した。

バッチファイル

perl encode_utf8_to_cp932.pl < hogehoge.txt >hogehoge_sjis.txt

encode_utf8_to_cp932.pl

use Encode qw/ from_to /;

@data = <STDIN>;

foreach $ele (@data) {
from_to( $ele, 'utf8','cp932');
}

print @data;

(前述の処理と同じようにcp932への変換をしているので、) ¥x{...} への変換はされなくなった。
スポンサーサイト
 このエントリーをはてなブックマークする このエントリーを含むはてなブックマーク  
  
 
 
■  ■  ■

 
本文へは上スクロールしてください

関連:
Perlで日本語(ISO-2022-JP)メールを送信(まとめ) - 名古屋で働くWebプログラマの覚書
http://d.hatena.ne.jp/kopug/20060903

2012.08.26 11:19 URL | TAKAGI-1(Admini) #cAPDhLHE [ 編集 ]












管理者にだけ表示

トラックバックURL↓
http://nhm.blog75.fc2.com/tb.php/540-761c4244

新しいトラックバックほど上に表示されます。