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

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

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

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

回答の条件
  • 1人2回まで
  • 登録:2010/01/20 18:18:53
  • 終了:2010/01/27 18:20:02

回答(4件)

id:uwao No.1

uwao回答回数171ベストアンサー獲得回数362010/01/20 18:49:25

ポイント23pt

下記では如何ですか。

→UTF

use Jcode;

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

→sjis

use Jcode;

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

id:mamy1326 No.2

mamy1326回答回数16ベストアンサー獲得回数12010/01/20 19:23:33

ポイント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

TREEG回答回数255ベストアンサー獲得回数342010/01/20 21:37:40

ポイント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

まきのっぴ回答回数352ベストアンサー獲得回数282010/01/21 01:21:50

ポイント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
    もう少し、利用する用途など詳しく分かれば、自動判別など具体的に書くことができるかもしれません。

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません