SJIS→UTF-8の文字コード変換
Perlで、SJISの16進で表記された文字があるのですが、それがうまく表示できません。
Unicodeの16進文字コードだとうまく表記できるのですが…。
以下がスクリプトです。
以下の場合だと。(句点)がSJISだと0x8142で、
その16進文字列を表示したいのですが、実行結果にあるエラーが出てしまいます。
Unicodeだと。は0x3002なのですが、うまく表示できています。
すみませんがよろしくお願いします。
----------------------------------------
# このファイルの文字コードはSJIS
# 改行コードはLF
#
# 。 SJIS 0x8142
# Unicode 0x3002
#
use Jcode;
use encoding "sjis";
$a = 0x8142;
$a = Jcode->new($a, "sjis")->utf8;
printf("句点の表示…%c\n",$a);
printf("句点の表示…%c\n",0x3002);
----------------------------------------
実行結果
"\x{8142}" does not map to shiftjis at test.pl line 14, <DATA> line 846.
句点の表示…\x{8142}
句点の表示…。
補足
早速のアドバイスありがとうございます。 質問にあるファイルをサーバーにアップロードして使うわけですが、そちら側でも文字コードの区別ができないということでしょうか? 実は処理がうまく動かず、原因が、EUCがSJISになってしまうことではないかと疑っていたのですが、関係ないんでしょうか?