[PHP] マルチバイト文字をヘキサ表記に変換する関数
2009年11月12日
マルチバイト文字を “\x00” という16進数表記 で書きたいな!
・・・という時に、文字コード一覧表 の類をいちいち引くのも面倒なので。
・・・という時に、文字コード一覧表 の類をいちいち引くのも面倒なので。
最後の追記にありますが、bin2hex という関数がありました。
糞エントリしてすみません。
コード
<?php function mb2hex($mb_char) { $decoded = ""; $len = strlen($mb_char); for ($i = 0; $i < $len; $i++) { $char = substr($mb_char, $i, 1); $dec = ord($char); $hex = dechex($dec); $decoded .= $hex; } return $decoded; }
動作確認
<?php $mb_char = "ち"; $decoded = mb2hex($mb_char); var_dump($decoded); // -> "e381a1" $mb_char = "ん"; $decoded = mb2hex($mb_char); var_dump($decoded); // -> "e38293" $mb_char = "こ"; $decoded = mb2hex($mb_char); var_dump($decoded); // -> "e38193"
ってか、こんな面倒な方法以外に
var_dumpにオプションがあったり、とか、何か表示する方法ないっすかね?
[追記] ぐわ、あった・・・
$python Python 2.5.2 (r252:60911, Nov 28 2008, 15:07:26) [GCC 4.1.2 20071124 (Red Hat 4.1.2-42)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> u"あ".encode("utf8") 'xe3x81x82'
俺、本当に頭固いなぁ・・・・・・。
[追記] そのものずばりの bin2hex
<php? var_dump(bin2hex("あ")); // -> "e38182"