• ベストアンサー

Jcodeというか、Encode.pmが

現在最新版(開発停止)のJcode.pm は Encode.pmのwrapperとして動作していますが、 「~」という文字という文字を、他コードからUTF-8に変換する 時に、日本語のコードセットの中では 本来「\xef\xbd\x9e」に変換されなければいけないのが、 「\xe3\x80\x9c」に変換されてしまいます。 このような例で他にある文字があれば、教えて頂ければと 思います。

質問者が選んだベストアンサー

  • ベストアンサー
  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.1

もしかすると本来\xe3\x80\x9cだったものが、 \xef\xbd\x9eに割り振られていたのではないでしょうか?

参考URL:
http://ja.wikipedia.org/wiki/チルダ#.E5.85.A8.E8.A7.92.E3.83.81.E3.83.AB.E3.83.80
ymda
質問者

お礼

そうみたいですね。参考URLのように勝手に割り振られるようです。 「~」(全角チルダ)以外の例は、他に見ないようですね。 とりあえず、強引に「~」だけを、\xef\xbd\x9e に置換することで 解決します。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • JcodeモジュールとEncodeモジュール

    以下、Perl5.8でJcodeモジュールを使った場合とEncodeモジュールを使った場合の違いについて、知りたいです。 ※そもそもこのモジュールは同時に使ったらだめなのでしょうか? use strict; use utf8; use Jcode; use Encode; my $dat1 = "あイ卯(1)Iⅰ"; Jcode::convert(\$dat1, "utf8"); my $dat2 = "あイ卯(1)Iⅰ"; $dat2 = Encode::encode("utf8", $dat2); 文字コード変換の正しい使い方が知りたいです。

    • ベストアンサー
    • Perl
  • Encode.pmで文字コードの判別

    文字コードの変換に以前はjcode.plを利用していたのですが、Perl5.8をインストールしたのでEncode.pmでこれを行おうと思っています。 変換にはfrom_toを利用しようと思っているのですが、肝心の文字コードの判別方法が分かりません。 jcode.plでいうところのgetcodeに当たる機能は、用意されているのでしょうか? ご存知の方おられましたら、よろしくお願いします。

    • ベストアンサー
    • Perl
  • Jcode.pmでの”~-”の変換

    お世話になります。 WindowsXPHomeSP2+ActivePerl5.6.1+Jcode.pm2.6の環境です。 UTF-8形式の文字列"~-"をJcode::convertを使用してShift-JIS形式に変換したところ、変換結果がいずれも"†"になってしまいました。 これらの文字を正常にJcode.pmを使用してShift-JISに変換する方法がありましたらご教授ください。よろしくお願いします。

    • ベストアンサー
    • Perl
  • Jcode.pmでconvertできない

    あけましておめでとうございます。 早速ですが、皆様のお力を拝借したく。 WindowsXPSP2+ActivePerl5.6.1でJcode.pmを使用して、utf8へ変換しようとしました。 http://okwave.jp/qa2600582.html を参考にJcode.pmを導入し(とある事情でインストールしておりません)、以下のソースを記述しました。 ちなみに"sjis"で記述しております。 #!/usr/local/bin/perl use lib "./lib"; use Jcode; $buf = "てすてすてす"; print "BeforeCode=".Jcode::getcode($buf)."\n"; Jcode::convert( \$buf, "utf8"); #$j = Jcode->new($buf); #$buf = $j->utf8; print "$buf\n"; print "AfterCode=".Jcode::getcode($buf)."\n"; exit; すると BeforeCode=sjis AfterCode=euc と表示され、"utf8"を指定したにも関わらず、"euc"に変換されてしまいました。 次に、上記ソースの中ほどを #Jcode::convert( \$buf, "utf8"); $j = Jcode->new($buf); $buf = $j->utf8; と書き換えてみました。すると、 BeforeCode=sjis Undefined subroutine &Jcode::_Classic::euc_utf8 called at lib/Jcode/_Classic.pm line 255. とエラーが出てしまいます。 見た感じeuc_utf8が存在しないと言われているようですが、Jcode\Unicode\NoXS.pmに存在しています。 環境に問題があるような気はしますが、どのようにすれば"utf8"への変換が成功するのでしょうか?ご教授いただければ幸いです。 ちなみに上記ソースで Jcode::convert( \$buf, "jis"); Jcode::convert( \$buf, "euc"); Jcode::convert( \$buf, "sjis"); はすべて成功し、指定した文字コードに変換されました。 "utf8"への変換だけが失敗するという状況で、新年早々頭を抱えております。

    • ベストアンサー
    • Perl
  • jcode.pmでconvertできない

    UTF-8の文字をエンコードするため、jcode.plでエンコードしたのをjcode.pmに変更しました。 それで、 &Jcode'convert(*subject,'jis'); という記述を Jcode::convert(*subject,'jis','utf8'); にして、sendmailしましたが、文字化けします。 もし、良い対処方法をご存知でしたら、助けてください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • Jcodeで変換できません。。。

    下記のCGI(文字コードはutf-8)を作成したのですが、正常に表示されません。 ~を上手に判定できていないということでしょうか??? また、もし、正しく変換できないのであれば、Jcodeで変換できない文字の一覧などあれば助かります。 分かる方、何卒、宜しくお願い致します。 #!/usr/bin/perl print "Content-type: text/html;charset=Shift_JIS\n\n"; $str = "1~10"; use Jcode; Jcode::convert( \$str,"sjis","utf8"); print $str; 表示された結果 1?10 となりました。

    • ベストアンサー
    • Perl
  • Jcode.pmの命令について

    今まではJcode.plを使用していたのですが、UNICODEの問題でJcode.pmに変更しました。 今までは &jcode'convert(*Message,'jis'); だった個所を Jcode::convert(\$Message, "sjis"); に変更して使用しています。 Jcodeでコンバートできる文字のエンコードは何があるのでしょうか? "sjis"の部分に入る予約語は他に何がありますか? それと、マニュアルや命令が載っているサイトがあれば宜しくお願いします。

    • ベストアンサー
    • Perl
  • Jcodeによるカタカナ→ひらがな変換

    初めて投稿させていただきます。 Perlで半角カタカナをひらがなに変換しているのですが、 以下のような文字列は文字化けが起こってしまいます。 オウシュウシ イイオカ コシオウ アカサカ キョウサカエ オオスケ  オオキシ キキョウ ソウカシ なんとなく法則がありそうなのですが、それがどういう理由なのかがわかりません。 たとえば、「アカサカ」は「鐔縁酋鐔誌酋」と化けてしまいます。 しかし、「アカサカチョウ」とした場合は化けません。 以下のようなコードを作成しています。 use Encode; use Jcode; $iline="文字列"; Encode::from_to( $iline, 'CP932', 'utf8'); my $str = Jcode->new($iline)->h2z->tr("ァ-ン", "ぁ-ん")->utf8; $strをファイルに出力 といった感じです。 文字コードの関係が弱いので、何をどうしたら良いのか検討がつきません。 何か参考になることを教えていただければ幸いです。 Perlのバージョン5.8.5 サーバー Linux系

    • ベストアンサー
    • Perl
  • Jcode.pmでの半角カナ→全角カナ変換

    Webフォームから取得したデータに半角カナが含まれていた場合の文字化け対策として、Jcode.pmを使用して、下記のようにEUCに変換しています。 use Jcode; $euc_string = jcode($form_input)->h2z->euc; 原理的には間違ってはいない筈ですが、ほとんどの場合、$form_inputの文字コードの判別に失敗(恐らく半角カナをEUCと誤認)し、文字化けしてしまいます。誤認しないように、下記の様に記述すれば、正しく全角カナに変換してくれます。 use Jcode; $euc_string = jcode($form_input,"sjis")->h2z->euc; ただ、入力コードがシフトJISとは限りませんので、この記述は好ましくないと思っています。 半角カナの文字化けは、webフォームを作られた方なら皆さん経験されていると思うのですが、どうされているのでしょうか? Jcode.pmの文字コード判別は、半角カナが混じっていた場合、かなり長い文字列でないと判別に失敗するようなので、フォームで短い文字列(名前等)を入力させて処理させた場合、ほとんど上手く動かないようなのですが?

    • ベストアンサー
    • Perl
  • Jcodeについて

    Jcodeについて教えてください。 Shift-jisで処理している文字列でJcodeを使用すると 半角カタカナ→全角カタカナ 半角小文字英字→半角大文字英字 への変換は文字コードをecuにしなくてもうまくいくのですが 全角英数字→半角英数字 に変換するとうまくいきません。 これはどうしてなのでしょうか?

    • ベストアンサー
    • Perl