電子書籍の厳選無料作品が豊富!

Active PerlをWindows上で利用しています。
(This is perl, v5.8.7 built for MSWin32-x86-multi-thread)

今回、毎回UTF-16という文字コードで生成されるテキストデータを
Perlスクリプトで処理させたいのですが、sjis等への文字変換を
スクリプト内で行うにはどうすれば良いでしょうか。

use Encode; では、"utf8"はありますが、"utf16"というのはありません。

Perlスクリプトに食わせる前に、(テキストエディタなどで手動で文字エンコードさせるのではなく)
バッチ処理的に文字列変換できる方法でも構わないのですが、
何か良い方法がありましたら、お教えください。よろしくお願いします。

A 回答 (1件)

>今回、毎回UTF-16という文字コードで生成されるテキストデータを


きちんとBOMをつけて吐き出してもらわないと
どうにもならないので,BOMがついてるという前提で.

>use Encode; では、"utf8"はありますが、"utf16"というのはありません。
Encode::Unicode -- Various Unicode Transformation Formats
のマニュアルをご覧ください.

EncodeモジュールはPerlの全ソースコードの半分以上をを占める
巨大なものなので,UTF**系はもちろん
普通に使うものでUnicodeとの対応表があるものは
大抵ありそうです.

なお,nkfの新しいもの(v.2以降かな)ならUTF16LE,UTF16BEとかを
きちんと変換したくれたように記憶しています.

この回答への補足

返信が遅くなりました。
>>きちんとBOMをつけて吐き出してもらわないと
>>どうにもならないので,BOMがついてるという前提で.

もったいぶった書き方をしましたが、adduseres.exe とかいう
Windowsに添付のツールがありますが、これを /d:u オプション付きで
実行した結果、作成されるログ(テキスト)ファイルです。

>>Encode::Unicode -- Various Unicode Transformation Formats
>>のマニュアルをご覧ください.

マニュアルをネット検索して、読んでみました。
Encode::Unicodeのモジュールを別途追加(ppm)してやる必要があるということでしょうか。
(生半可知識で恐縮ですが)

>>なお,nkfの新しいもの(v.2以降かな)ならUTF16LE,UTF16BEとかを
>>きちんと変換したくれたように記憶しています.

結果的に他のツールですが、utf16→8へ変換してくれるフリーソフトが
ありましたので、それをワンクッション入れて、その後、Encodeで
UTF-8→Sjisへ変換するというベタな処理にして、現状はしのいでいます。

ノド元過ぎれば、これ以上手を打たないようになってしまいますが、
方法としては、ちょっとイマイチかなと感じております。

補足日時:2007/09/10 11:38
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!