- ベストアンサー
16進数の文字列を普通の文字列に直す方法
色々と探し尽くしたのですが、 安室奈美恵 のような文字列を 安室奈美恵 という普通の文字列に直す方法が解りません。 chr pack とかが引っかかりましたが、 どうやら設定が必要なようでお手上げです。 どなたかご教授よろしくお願い致します
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ANo.2です。 >パラメータとかあるのでしょうか? マニュアルに書いてあります。 3つ目の引数(パラメータ)に適切な文字セットを指定する必要があるのでしょう。
その他の回答 (4)
- JV44
- ベストアンサー率50% (24/48)
数値文字参照というものですね。 html_entity_decode("安室奈美恵",ENT_QUOTES,"UTF-8"); で文字に戻せます。
お礼
都合により、プログラムがSJIS、 読み込みファイルがUTF-8というややこし環境のせいか、 画面上は日本語でも、 ソースを見るとデコードされていません。 環境設定に何かあるのかも? 一応解決しました。 ありがとうございます。
- euwai
- ベストアンサー率57% (4/7)
16進数ではなく、URLエンコードかと思われます。 下のサイトにてデコードすると、文字が表示されます。 http://home.kendomo.net/board/decode/
お礼
ありがとうございます。 でもURLエンコードでこうはならないのでは? 自前プログラムでの変換がしたいのであります。
- UmJammer
- ベストアンサー率58% (115/196)
html_entity_decode()関数でデコードできますよ。 http://jp.php.net/manual/ja/function.html-entity-decode.php
お礼
デコードできません。 画面上では漢字が表示されますが、 ソースを見ると、相変わらず 安室奈美恵 が表示されてます? パラメータとかあるのでしょうか? 独学ゆえの・・・
- Faq_Men
- ベストアンサー率13% (8/58)
>安室奈美恵 これはどう見ても私には16進数には見えません 根本的に何かが間違っちゃってるのではないでしょうか?
お礼
思い出しました。 メールアドレスを暗号(?)化するための あれでしたね。
お礼
自己解決しました。 HTML実体参照とかいうものだったようです。 html_entity_decode では通常の日本文字部分がデコードできないようなので、 mb_decode_numericentity を使いました。 //16進数を10進数に変換する(mb_decode_numericentityは16進数に未対応なので) function hex2Dec($str){ $str = preg_replace_callback( "/&#(x|X)([^;]+);/", create_function( '$m', 'return "&#".hexdec($m[2]).";";' ), $str ); return $str; } //UTF-8のファイルを開いて、16進数の文字列なら日本語変換を行う if(preg_match("/&#x/i",$data[4])){ $data[4]=mb_decode_numericentity(hex2Dec($data[4]), array(0, 0xffff, 0, 0xffff), "UTF-8"); } しばらくプログラミングから離れていたので いい頭の体操になりました。 また質問する時は宜しくお願いいたします。