- 締切済み
文字コードの違うデータを判別したい
データの文字コードが異なるファイルを確認します。 以下のスクリプトで$get_csvのデータの文字コードを判別にShift-JISで別のファイルに格納したいのです。 (スクリプト) $get_csv = get("$_[0]"); if ($get_csv =~ /utf-8/i) { &jcode'convert($get_csv,'sjis','utf-8'); } if ($get_csv =~ /EUC-JP/i) { &jcode'convert($get_csv,'sjis','euc'); } (ここまで) &jcode'convertの使い方が悪いのか?データをうまく変えられていない感じがします。 上記の内容で説明が足りてますでしょうか? よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- makoji
- ベストアンサー率25% (1/4)
すみません。 from_to()は文字列の長さを返すようですね。また関数の前に Encode:: を付けないといけないようです。 $str=from_to($str,'cp932','utf8'); ではなくて、 Encode::from_to($str,'cp932','utf8'); とすると、$strの中の文字列はUTF-8になっています。 #! usr/bin/perl use Encode; my $datafile='shift-jis.txt'; open(IN,$datafile); while(<IN>) { print $_."\n"; print Encode::from_to($_,'cp932','utf8'); print "\n"; print; } close(IN);
- makoji
- ベストアンサー率25% (1/4)
use Encode; $str=from_to($str,'cp932','utf8'); で如何でしょうか?
補足
回答ありがとうございます。 上記の内容を入れてはみましたがうまくいきませんでした。 $str=from_to($str,'cp932','utf8'); については、どのあたりで入れればよいのでしょうか?
- kt_yuka
- ベストアンサー率53% (8/15)
require './jcode.pl'; にあたるのは use Jcode; ですね。 ってか、Perlのバージョンていくつですか?
補足
回答ありがとうございます。 >Perlのバージョンていくつですか? 5.8.8 になります。 この場合は、どのような方法で行えばよいでしょうか?
- sakusaker7
- ベストアンサー率62% (800/1280)
&jcode'convert という大昔のスタイルを使っていることから考えて、 jcode.pl をお使いだと思いますが、jcode.pl は UTF-8からの変換や UTF-8への変換をサポートしていません。
補足
回答ありがとうございます。 jcode.pl を使用しております。 UTF-8からの変換は出来ないのですね。 そうでしたか。 Jcode::convertというのだと使えるのでしょうか? 以下のように修正してみましたが動作がうまくいきませんでした。 (ここから) if ($get_csv =~ /utf-8/i) { Jcode::convert(\$get_csv,'sjis','utf-8'); } if ($get_csv =~ /EUC-JP/i) { Jcode::convert(\$get_csv,'sjis','euc'); } (ここまで) それとも、jcode.pl のように require './jcode.pl'; というようなものが必要なのでしょうか? 伺ってばかりで申し訳ございません。
お礼
解凍ありがとうございます。 恥ずかしい話ですが、なぜかうまくいきません。 とりあえずもう一度勉強して再挑戦いたします!!