- ベストアンサー
Perlでファイル名が文字化けする問題と解決方法
- Perlを使用してファイル名を変更する際に、文字化けする問題が発生しています。ファイル名にWeb上の情報を追加しようとした際に文字化けが発生し、UTF-8エンコードを試したが同様の結果となりました。この問題の解釈と解決方法について教えてください。
- Perlを使用してファイル名を変更する際に、文字化けする現象が発生しています。ファイル名にWeb上の情報を追加しようとした際に文字化けが起き、UTF-8エンコードを試したが解決しませんでした。この問題の解釈と解決方法について教えてください。
- Perlでファイル名の文字化け問題が発生しています。ファイル名にWeb上の情報を追加しようとした際に文字化けが発生し、UTF-8エンコードを試しましたが同様の結果となりました。この問題の解釈と解決方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
UTF8フラグを外せばよいです。 Windows XP では 下のスクリプトをUTF8 で保存し、実行すると文字化けしないで「かきくけこ.txt」が作成されます。文字コードにCP932を指定していますが、SJISとほぼ同じです。 Vista でも同じではないでしょうか。 use strict; use warnings; use Encode; use utf8; my $file_name="あいうえお.txt"; open my $out, ">", Encode::encode('CP932', $file_name) or die; print $out Encode::encode('CP932', "こんにちは\n"); close $out; my $new_name = "かきくけこ.txt"; rename Encode::encode('CP932', $file_name), Encode::encode('CP932', $new_name); exit;
その他の回答 (1)
- SAYKA
- ベストアンサー率34% (944/2776)
windows側がUTF-8じゃないっていうオチじゃないかな。 文字コードっていうのは 文字の表示についての「地方語」みたいなものだと思えば良いよ。 つまり windowsのファイルシステムが返してくる文字コードとperlが駆動している文字コードを一致させるう必要が有るってこと。 文字コード変換関連で調べれば出てくるんじゃないかな。
お礼
迅速な回答ありがとうございます! >つまり windowsのファイルシステムが返してくる文字コードとperlが駆動している文字コードを一致させるう必要が有るってこと。 これはなんとなくわかります。 今、基本的にエンコード無しだとshift-jisで出力されているようです。 (shift-jisにエンコードした時と出力結果が同じなため) テキストへの出力だとこれで問題ないようです。 ただ、ファイル名に同じ情報を持っていても文字化けしてしまうので、 ファイル名だと別の文字コードが使用されているのではないかと考えています。 『windows ファイル名 文字コード』等で検索して 目についた文字コードに片っ端からエンコードしてみましたがダメでした。 (utf-8,utf-16,unicode,euc-jp,sjis) 他に何かあるでしょうか?
お礼
回答ありがとうございます! 色々調べてる内にUTF8フラグという言葉は出てきたのですがよくわからずじまいにしていました。 今でも今ひとつ分かっていませんが >rename Encode::encode('CP932', $file_name), Encode::encode('CP932', $new_name); の部分をマネてみたところとりあえず文字化けは克服できました! とりあえず処理だけ済ましてまて勉強しようとおもいます。 ありがとうございました。