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

質問させて下さい。
Windows環境、ActivePerl ver5.8.6.811です。

現在、走らせるとテキストファイルが生成されるスクリプトを作成して使っているのですが、作成したテキストファイルに出力される文字データをUnicode(UTF16-LE)にすることは、可能でしょうか?

何もしないでいると、S-JISでの出力になってしまうのですが…。

参考になるサイトなどありましたら、教えて頂けたら幸いです。

よろしくお願いします。

A 回答 (5件)

Jcode.pmのインストール方法ですが、


環境がWindowsの場合ですが、(それ以外はわかりません、ごめんなさい。)
Windowsのコマンドプロンプトを開いて、
(XPなら[スタート]->[すべてのプログラム]->[アクセサリ]->[コマンドプロンプト]をクリック)

ppmと入力してEnterボタンを押してください。
すると、

ppm>

という表示になりますので、

ここで、

ppm>install Jcode

と入力してEnterキーを押してください。

Jcode.pmモジュールがまだインストールされていない場合は、自動的にインストールされるはずです。

すでにインストールされているなら、
Note: Package 'Jcode' is already installed
と表示されるとおもいます。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1556470
    • good
    • 0

すいません、#2は、以下のように修正してください


use encoding 'shiftjis';

binmode STDOUT => ":raw:encoding(UTF-16LE)";
binmode STDERR => ":raw:encoding(UTF-16LE)";
    • good
    • 0

>書いて頂いたソース部分は、ソースの一番上のほうに書けばいいのでしょうか?


一番最初に書きます。

>「script produced no output」
>となってしまい、うまく動作してくれません。
件のメッセージは、CGI中で実行した時にスクリプトにエラーが有って、実行できないので出力が無かった時に表示されます。
なので、いきなりCGIで動かしてみるのではなくて、
まずは、コマンドとして実行してみてエラーを潰してからCGIでの実行をするべきだと思います。

あと、UTF-16LEを使用する理由はなんですか?
特に理由がないようなら

use encoding 'shiftjis';

binmode STDOUT => ":encoding(UTF-8)";
binmode STDERR => ":encoding(UTF-8)";

も試してみてください。
    • good
    • 0

ソースをシフトJISで作成していて


出力をUnicode(UTF16-LE)にするには、
#----------------------------------------------------
use encoding 'shiftjis';

binmode STDOUT => ":encoding(UTF-16LE)";
binmode STDERR => ":encoding(UTF-16LE)";

print "あいうえお\n";
----------------------------------------------------
の様にすればいいです。
シフトJISをうまくマッピングできないことがあるので、
use encoding 'shiftjis';
より
use encoding 'utf8'; #ソースを最初からUTF-8で記入する
ほうがいいです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

書いて頂いたソース部分は、ソースの一番上のほうに書けばいいのでしょうか?

早速、やってみたのですが、
「script produced no output」
となってしまい、うまく動作してくれません。

私が初心者なので、書き加え方を間違っている可能性が非常に高いのですが…。

もう少し試行錯誤してみようと思います。
せっかくご回答くださったのに、申し訳ありません。

お礼日時:2005/08/11 15:27

UTF16に変換するモジュールはあるみたいです。


Unicode::Stringあたりで検索すれば出てきそうです。

でも、UTF16-LEってなんだろ??
すみません、勉強不足で・・

本当に変換できてるかどうか未確認ですが、一応書いときます。まちがってたらすみません。

use Jcode;
use Unicode::String qw(utf8 utf16);

my $data = utf8( Jcode->new('これはテストだよ')->utf8 )->utf16;


if(open(WRITE,"> test.txt")){
print WRITE $data;
close(WRITE);
}
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

早速、書いて頂いたソースを使って試行錯誤してみたのですが、私の力不足からか…どうもだめみたいです…。CGIエラーになってしまいます。


とりあえず、「use Jcode;」を使うには、Jcode.pmというものをインストールしないと駄目(?)みたいなので、してみたのですが、それでも出来ません(ちゃんとインストールできてるのか微妙です…)。

「script produced no output」になってしまいます。

せっかくご回答くださったのに、申し訳ありません。


補足ですが、UTF16-LEとはWindowsが標準でサポートしてるUnicodeの規格だったと思います。

お礼日時:2005/08/11 15:21

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