phpのhex2binについて
phpで、utf-16の文字をbin2hexに通し、
hex2binに再度かけると、その16進数をutf-8と捉えられ、漢字等が上手く戻りません。
対策等無いですか?
文章では分かりにくいかと思いますので、コードの一例を載せておきます。
<?
$deta = "漢字";
$a = bin2hex(mb_convert_encoding($deta,"UTF-16LE"));
//$aは226f575b
echo hex2bin($a);//ここで「漢字」とechoされて欲しい
?>
実際表示されるのは "oW[ で、これはutf-8では226f575bとなります。
No.1ベストアンサー
- 回答日時:
違います。
正しく元の UTF-16LE に変換されています。
より正確に言えば、 bin2hex で16進文字列に変換されたバイト列が、hex2binで元のバイト列に戻されています。
0x22 0x6f 0x57 0x5b となったバイト列を「UTF-16LEの『漢字』」と解釈するのか、 「ASCII互換コードの 『"oW[ 』」と解釈するのかは、それを表示するアプリケーションです。
例えば、ブラウザに "oW[ と表示されるのなら、それは、ブラウザがUTF-16LEと解釈していないからです。
よって、対策は
・アプリケーション側の設定を変えて、UTF-16LEと解釈するようにする
・UTF-16LEからアプリケーション側で対応している文字コードに変換して出力する
のいずれかになります。
丁寧な回答ありがとうございます
なるほど、そういう事なんですか。
という事は、
echo mb_convert_encoding(hex2bin($a),"UTF-8","UTF-16LE");
とすれば良かった、という事ですよね。
全然気づかなかったです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) I2C接続のLCDディスプレイを使う 2 2023/05/01 17:15
- Excel(エクセル) マクロ、条件付き書式のfont.color 1 2023/03/28 01:10
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- その他(プログラミング・Web制作) 質問です 7733を16進にかえると、1E35になると思うのですが、これをbinエディタで入力する時 1 2022/11/28 13:16
- その他(プログラミング・Web制作) Sikulix2.0.5(Jython2.7.3)でcsvを読込WEB検索条件にpasteで文字化け 1 2023/03/31 11:02
- HTML・CSS <meta charset="utf-8"><!-- 文字化け防止ユニコード --> ?最近モバイル 1 2022/12/11 04:27
- Windows 8 メモ帳による文字コード変換 2 2022/09/01 18:38
- PHP PHPプログラムの間違い 1 2022/10/06 14:33
- Excel(エクセル) 文字化け。メモ帳でUTF-8に変換後、エクセルへ貼り付けたいです。 3 2022/08/14 07:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpでPEAR::DBを使っているので...
-
phpでcookieがうまく保存されない
-
index.phpって何ですか? 具体...
-
index.phpに入るには、どうすれ...
-
PHP8を使うと、大量のWarningが...
-
PHPSpreadsheetを使って関数を...
-
アンドロイドスマホでのphp ech...
-
Postgresの特定のカラムからス...
-
PHPのエラーの解消法について教...
-
PHP MySql ページング
-
ECCUBE4のページ管理でPHPを実...
-
PHPで画像の渡しが上手く行きま...
-
ログインした掲示板ですが、直...
-
ここで言う空文字の意味とは?
-
PHP でメールフォームを作成したい
-
MySQLの配置が変わったため、db...
-
phpのクラスメソッドの定義が長...
-
phpでクラスのメソッドで同名の...
-
アマゾンのような評価の星を選...
-
SFTPなどは使わないホームペー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
$str=preg_replace('/\\u3000/'...
-
mb_convert_encoding で?になる。
-
i18n_convert と mb_convert_e...
-
PHPの文字化けした文字だけ削除...
-
header("location~")をPOSTで...
-
ハシゴの「高」が「?」に置き...
-
mysql utf8、php・euc-jp で出...
-
phpのhex2binについてphpで、ut...
-
windowsXP、XAMPPでメーラーMer...
-
エンコーディングについて
-
PHPフォーム→PHP確認画面で...
-
データベースから取り出した日...
-
Content-Typeが機能していない?
-
POST文字列が化ける(外字)
-
scandir関数取得結果の文字化け
-
文字化け
-
【PHP】ファイル読み込みで...
-
phpMyFaqでの文字化けについて
-
XML出力時の日本語一部文字化け
-
urlencodeしていない日本語をPA...
おすすめ情報