• 締切済み

文字列を文字コードの数値に変換する方法

JISコードの日本語を含む文字列を、文字コードの数値に変換する方法がわからなくて困っています。とりあえずは文字列ではなく、1文字だけ変換することを目指してord関数を使ったんですが、1バイト文字はうまくいったのですが、2バイト文字だと思うような結果になりませんでした。 例)以下のように変換したいです。 「a」→「97」 「あ」→「9250」 どなたかいい方法や関数をご存じないでしょうか? ちなみに下記のように片っ端から試してみたのですが、思うような結果が得られませんでした。 $buf = mb_convert_encoding($_POST["string"], "JIS", "EUC-JP"); $jis_code1 = ord("$buf"); $jis_code2 = bin2hex("$buf"); $jis_code3 = urlencode("$buf"); $jis_code4 = intval("$buf");

みんなの回答

  • narusuji
  • ベストアンサー率40% (4/10)
回答No.2

PHPをはじめたばかりなので詳しくありませんが、bin2hexはどうでしょう? echo bin2hex("あいうえお");

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

バイト単位で処理すればいいのでは?どういう表示にしたいのかイマイチわかりませんが、例えばこんな感じで・・   $buf = mb_convert_encoding($string, "JIS", "EUC-JP");   $dest = '';   for ($i = 0; $i < strlen($buf); $i++) {     $w = substr($buf, $i, 1);     $w = bin2hex($w);  // 「表示したい編集方法」に合わせて書き替え     $dest .= $w;     }   print $dest;

joker1234
質問者

お礼

回答ありがとうございます。 質問の仕方が悪かったです。すみません。 JIS文字列を10進数のJISコードに変換し表示する方法でした。 お答えいただいたものを参考にしつつ、自己解決しました。 どうもありがとうございました。 こんなことで困る人はいないかもしれないけど、一応メモです。 $line = mb_convert_encoding($_POST["string"], "JIS", "EUC-JP"); for ($i = 0; $i < mb_strlen($line, "JIS"); $i++) { $buf = mb_substr($line, $i, 1, "JIS"); $buf = bin2hex($buf); $buf = ereg_replace("^1b2442", "", $buf); $buf = ereg_replace("^1B284A", "", $buf); $buf = ereg_replace("^1b2849", "", $buf); $buf = ereg_replace("1b2842$", "", $buf); $buf = hexdec($buf); $disp .= "「{$buf}」"; } 文字列をバイナリ化し、下記の特殊コードを削除して10進数変換。 JISコードの始まり = 1B2442 JISローマ字の始まり = 1B284A JIS半角カナの始まり = 1B2849 ASCII コードに戻るとき = 1B2842

関連するQ&A