文字列をutf8に変換したいのですが下記コードではうまくいきません。
$string = "テスト";
use Encode;
$string = encode ( 'utf8' , $string );
ご教授よろしくお願いします。
下記では如何ですか。
→UTF
use Jcode;
Jcode::convert(\$string,'utf8');
→sjis
use Jcode;
$utflistdata = Jcode::convert( $string , "sjis", "utf8" );
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
ここらへんが参考になるかもしれないです。
その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);))
.
参考
encode する前に decode しないとダメです。
仮にソースが Shift_JIS で書かれているとしたら、encode する前にまず
$string = decode ( 'shiftjis', $string );
です。
decode と encode を繰り返すかわりに
Encode::from_to ( $string , 'shiftjis' , 'utf8' );
でもいいです。
この辺を参考にしてください。
コメント(1件)