「お昼の放送」の思い出

下記、PERLスクリプトを
Windows 7+ActivePerl + UTF-8記述状態
で使いたいのですが、どうやら、「爱」が正常に変換されず、?という文字が発生しファイルの作成ができないようです。

普通に、Windows 7上で、$titleの爱愛aiをコピーしてファイルの作成はできるので、Perl上でもこの動作を何とか実現させたいのですが、どのようにすればいいでしょうか?
---test.pl(utf8記述)---
use strict;

my $title = "爱愛ai"; # 念のためURLエンコードした物も書いておきます>%E7%88%B1%E6%84%9Bai
use Encode;
Encode::from_to($title, "utf8", "cp932");

open(F,">$title");
print F $title;
close(F);

open(F,">title_test.txt");
print F $title;
close(F);
-------------------------------

A 回答 (2件)

検索したら、こんなのがありました


http://bokut.in/mt/2012/04/perl-win32-unicode.html
    • good
    • 0
この回答へのお礼

素晴らしい回答ありがとうございます。
こんなモジュールがあったのですね!



同じ問題にぶち当たった人への参考
因みに、私自身は、他のサブルーチンでmoveを使う必要がありましたので、
こちらもとても役に立ちましたので、一応紹介しておきます。
ファイルのコピーや移動もこれでできるようです
http://search.cpan.org/~xaicron/Win32-Unicode-0. …

お礼日時:2013/03/29 22:44

例えば


Encode::from_to($title, "utf8", "cp932");

Encode::from_to($title, "utf8", "cp932", Encode::FB_WARN);
としたらどうなりますか?
    • good
    • 0
この回答へのお礼

コメントありがとうございます。
下記コードで実行してみました。
-----------------------
use strict;
use warnings;

my $title = "爱愛ai";
use Encode;
# Encode::from_to($title, "utf8", "cp932");
Encode::from_to($title, "utf8", "cp932", Encode::FB_WARN);

open(F,">$title");
close(F);

open(F,">title_test.txt");
print F $title;
close(F);
-----------------------

まず、ファイルは作成されませんでした。
また、title_test.txtファイルについては、中身に何も書かれていませんでした。
また、use warnings;を追加して実行してみたところ(ない場合は、表示なし)
"\x{7231}" does not map to cp932 at C:/Perl64/lib/Encode.pm line 197.
というメッセージが表示されました。

お礼日時:2013/03/28 02:41

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


おすすめ情報