Perlをいじって2日の者です。
WindowsVistaを使っております。
現在renameを使ってファイル名を変更しようとしています。
現在のファイル名がIDだけで、
Web上にあるそのIDに対応する情報をファイル名に追加しようとしています。
Web上の情報を取得するまではできたのですが、
変数に入れたその情報を、ファイル名に入れようとすると文字化けします。
ただ、その情報をコマンドプロントで扱う時も、テキストへ出力してみても文字化けしません。
文字化けは、文字コードなるものが原因らしいということで、
とりあえずよく見かける「UTF-8」というものにエンコードしてみたところ、
テキストへの出力が、ファイル名へのそれと同様に文字化けしました。
エンコードした上でファイル名に入れようとすると
情報のそのものがないものとして扱われるようになりました。
これはどう解釈すればいいのでしょうか?
どうすれば文字化けを解決できるでしょうか?
No.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;
回答ありがとうございます!
色々調べてる内にUTF8フラグという言葉は出てきたのですがよくわからずじまいにしていました。
今でも今ひとつ分かっていませんが
>rename Encode::encode('CP932', $file_name), Encode::encode('CP932', $new_name);
の部分をマネてみたところとりあえず文字化けは克服できました!
とりあえず処理だけ済ましてまて勉強しようとおもいます。
ありがとうございました。
No.1
- 回答日時:
windows側がUTF-8じゃないっていうオチじゃないかな。
文字コードっていうのは 文字の表示についての「地方語」みたいなものだと思えば良いよ。
つまり windowsのファイルシステムが返してくる文字コードとperlが駆動している文字コードを一致させるう必要が有るってこと。
文字コード変換関連で調べれば出てくるんじゃないかな。
迅速な回答ありがとうございます!
>つまり windowsのファイルシステムが返してくる文字コードとperlが駆動している文字コードを一致させるう必要が有るってこと。
これはなんとなくわかります。
今、基本的にエンコード無しだとshift-jisで出力されているようです。
(shift-jisにエンコードした時と出力結果が同じなため)
テキストへの出力だとこれで問題ないようです。
ただ、ファイル名に同じ情報を持っていても文字化けしてしまうので、
ファイル名だと別の文字コードが使用されているのではないかと考えています。
『windows ファイル名 文字コード』等で検索して
目についた文字コードに片っ端からエンコードしてみましたがダメでした。
(utf-8,utf-16,unicode,euc-jp,sjis)
他に何かあるでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Google Drive 【Googleドライブ】ドライブ上内でのフォルダ移行について 4 2022/11/30 12:50
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- HTML・CSS HTMLエディタBracketsの文字化け 3 2022/04/28 14:50
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- その他(スマートフォン・携帯電話・VR) ファイル文字化け直せますか? 5 2023/03/19 11:24
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlの日本語文字コードはどう...
-
URLエンコードされたデータを戻...
-
メール(iso-2022-jp-2)のデコ...
-
Perl:ファイル名だけ文字化けする
-
CSVファイルの中で、「 , 」カ...
-
VBA 文字に半角が含まれて...
-
エクセルにMicrosoft Barcode C...
-
「何とかで始まり、何とかで終...
-
EXCELからCSVにすると余計なカ...
-
エクセルで数値を全角文字(カ...
-
CString から LPCTSTRの型に変換
-
Excel VBAでPDFファイルをMicro...
-
WORDで改ページすると時々グレ...
-
Accessでのグループ化で全角・...
-
英数字のみ全角から半角に変換
-
VBA EXCEL あるセルの中の一...
-
マクロを使ってフォルダー内に...
-
CSVの定義
-
プログラミングでは、半角括弧...
-
正規表現の否定先読みで、複数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
pythonエラー
-
BASP21によるbase64のデコード...
-
Perl:ファイル名だけ文字化けする
-
「繝・せ繝・」となる文字化け
-
MIMEでエンコードされたMailのS...
-
jcode.pmでconvertできない
-
1つのサイトで文字コードが混在...
-
Encode.pmで文字コードの判別
-
メール(iso-2022-jp-2)のデコ...
-
URLエンコードされたデータを戻...
-
jisコードで16進数の『3c』か...
-
perlの日本語文字コードはどう...
-
CGIでメールを送る際に文字...
-
CASLIIの数値データ入出力
-
文字コードについて
-
CSVファイルの中で、「 , 」カ...
-
英数字のみ全角から半角に変換
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
住宅にカナを入力する際に丁目...
おすすめ情報