Help us understand the problem. What is going on with this article?

pack(),hex2bin()でデコード、unpack(),bin2hex()でエンコード

More than 1 year has passed since last update.

UTF-8の文字コードを並べたものから文字列を作るのにはpack() または hex2bin() を使う。
※hex2bin() はPHP 5.4以降
また、その逆に文字列を文字コードの並びの文字列に変換するのは unpack() または bin2hex() を使う。
bin2hex() と unpack() は戻り値の型が違うので注意(前者は文字列、後者は配列)。

decode_encode_test.php
mb_internal_encoding('UTF-8');

//header('Content-Type: text/plain;charset=utf-8');

$char = 'あ';
$hex_str = bin2hex($char);
echo $char . ':' . var_export($hex_str, true) . PHP_EOL;

$char_decoded = hex2bin($hex_str);
echo $char_decoded . PHP_EOL;

$char = 'い';
$hex_str = unpack('H*', $char);
echo $char . ':' . var_export($hex_str, true) . PHP_EOL;

$char_decoded = pack('H*', $hex_str[1]);
echo $char_decoded . PHP_EOL;

// "ア亜"
echo pack('H*', 'E382A2E4BA9C') . PHP_EOL;

// Windowsで入力するとハイフンマイナス(全角) UTF-8:EFBC8D Unicode:FF0D
echo pack('H*', 'EFBC8D') . PHP_EOL;

// Macで入力するとマイナス  UTF-8:E28892 Unicode:2212
echo pack('H*', 'E28892') . PHP_EOL;

実行結果は下記のようになる。

$ php decode_encode_test.php
あ:'e38182'
あ
い:array (
  1 => 'e38184',
)
い
ア亜
-
−
$ 

参考サイト

PHPのunpack関数を活用する|katyos開発室
【PHP】 16進エンコードされたバイナリ文字列をデコードする « PHP « 技術ブログ « 株式会社プロネット
PHPでバイナリプログラミングその2 テキストとは何か : アシアルブログ
Unicode対応 文字コード表

y_ito
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした