• 締切済み

文字コードの違うデータを判別したい

データの文字コードが異なるファイルを確認します。 以下のスクリプトで$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の使い方が悪いのか?データをうまく変えられていない感じがします。 上記の内容で説明が足りてますでしょうか? よろしくお願いいたします。

みんなの回答

  • makoji
  • ベストアンサー率25% (1/4)
回答No.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);

hihin2003
質問者

お礼

解凍ありがとうございます。 恥ずかしい話ですが、なぜかうまくいきません。 とりあえずもう一度勉強して再挑戦いたします!!

  • makoji
  • ベストアンサー率25% (1/4)
回答No.3

 use Encode;    $str=from_to($str,'cp932','utf8'); で如何でしょうか?

参考URL:
http://digit.que.ne.jp/work/index.cgi?Encode
hihin2003
質問者

補足

回答ありがとうございます。 上記の内容を入れてはみましたがうまくいきませんでした。 $str=from_to($str,'cp932','utf8'); については、どのあたりで入れればよいのでしょうか?

  • kt_yuka
  • ベストアンサー率53% (8/15)
回答No.2

require './jcode.pl'; にあたるのは use Jcode; ですね。 ってか、Perlのバージョンていくつですか?

hihin2003
質問者

補足

回答ありがとうございます。 >Perlのバージョンていくつですか? 5.8.8 になります。 この場合は、どのような方法で行えばよいでしょうか?

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

&jcode'convert という大昔のスタイルを使っていることから考えて、 jcode.pl をお使いだと思いますが、jcode.pl は UTF-8からの変換や UTF-8への変換をサポートしていません。

hihin2003
質問者

補足

回答ありがとうございます。 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'; というようなものが必要なのでしょうか? 伺ってばかりで申し訳ございません。