perlプログラム初心者です。

文字列をutf8に変換したいのですが下記コードではうまくいきません。

$string = "テスト";
use Encode;
$string = encode ( 'utf8' , $string );

ご教授よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/01/27 18:20:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:uwao No.1

回答回数180ベストアンサー獲得回数39

ポイント23pt

下記では如何ですか。

→UTF

use Jcode;

Jcode::convert(\$string,'utf8');

→sjis

use Jcode;

$utflistdata = Jcode::convert( $string , "sjis", "utf8" );

id:mamy1326 No.2

回答回数16ベストアンサー獲得回数1

ポイント23pt

Encodeを使用されるのであれば下記ではどうでしょうか?

Encode::from_to($string,'shift-jis','utf-8');

http://www.horse-water.mydns.jp/tips/tips_P00022.html

http://saboten009.blogspot.com/2008/01/perl.html

ここらへんが参考になるかもしれないです。

id:TREEG No.3

回答回数255ベストアンサー獲得回数34

ポイント22pt

その1

(($string = "テスト";
use Encode;
#入力される文章がshift-jisの代わりに、euc-jpであれば、euc-jpにすること。
Encode::from_to( $string , "shift-jis", "utf8" );

open(F,">text.txt");
print F "$string";
close(F);))

.

その2

((
#短い文字などの場合失敗することがありますので用途によっては、クエリに確実に判別できる文字を入れて判別させることもあるようです。

$string = '文字コードの自動判別。';
use Encode;
use Encode::Guess qw/euc-jp shift-jis/;
$enc = guess_encoding($string);
Encode::from_to( $string , $enc , "utf8" );

open(F,">text.txt");
print F "$string";
close(F);))

.

参考

http://prog.coresv.net/perl/html/0/RW5jb2RlOjpHdWVzcw.html

id:pmakino No.4

回答回数358ベストアンサー獲得回数30

ポイント22pt

encode する前に decode しないとダメです。


仮にソースが Shift_JIS で書かれているとしたら、encode する前にまず

$string = decode ( 'shiftjis', $string );

です。


decode と encode を繰り返すかわりに

Encode::from_to ( $string , 'shiftjis' , 'utf8' );

でもいいです。


この辺を参考にしてください。

Perl 5.8.x Unicode関連

404 Blog Not Found:perl - Encode 入門

  • id:TREEG
    もう少し、利用する用途など詳しく分かれば、自動判別など具体的に書くことができるかもしれません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません