首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php bin2hex问题

php bin2hex问题
EN

Stack Overflow用户
提问于 2011-01-10 19:52:07
回答 2查看 2K关注 0票数 2

我写了一个小的php脚本来将字符串转换成十六进制,但是我有一个问题或者我遗漏了一些东西,下面是一个小测试:

代码语言:javascript
复制
$char='だ';
$a='a';
echo $char,':', bin2hex($char),"\n";
echo $a,':', bin2hex($a),"\n";

我得到的'a‘(或任何ASCII)的结果是正确的,但对于中文、希伯来语或阿拉伯语是不正确的,下面是输出:

代码语言:javascript
复制
だ:e381a0
a:61

这个长数字是什么?来自charmap工具的这个字符(だ)的十六进制是3060,但是为什么我从PHP中得到了错误的值。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-10 20:03:20

0xE381A0的UTF8编码

代码语言:javascript
复制
U+3060  だ   e3 81 a0    HIRAGANA LETTER DA

http://www.utf8-chartable.de/unicode-utf8-table.pl?start=12192

因此,如果您的输入是UTF-8,那么您的输出是正确的。

更新

如果这是您想要的,您可以使用以下任意一种方式获取3060

代码语言:javascript
复制
iconv_set_encoding('internal_encoding', 'UTF-8');

echo bin2hex(iconv('UTF-8', 'ISO-10646-UCS-2', 'だ')) . PHP_EOL;
echo bin2hex(iconv('UTF-8', 'UNICODE-1-1', 'だ')) . PHP_EOL;
echo bin2hex(iconv('UTF-8', 'UTF-16BE', 'だ')) . PHP_EOL;

有关更多信息,请参阅iconv()

票数 3
EN

Stack Overflow用户

发布于 2011-01-10 19:56:45

  • e3 = 227
  • 81 = 129
  • a0 = 160

这可能是一个3字节的Unicode字符,因此bin2hex()返回三个十六进制值。如果您仍然感到困惑,请参阅此phpsh输出:

代码语言:javascript
复制
php> =bin2hex('adam')
"6164616d"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4646499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档