>백엔드 개발 >PHP 튜토리얼 >ascii码的汉字疑问。网上看到的一个代码,该怎么解决

ascii码的汉字疑问。网上看到的一个代码,该怎么解决

WBOY
WBOY원래의
2016-06-13 09:58:361092검색

ascii码的汉字疑问。网上看到的一个代码

PHP code
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><?php /**** ASCII 转 十六进制 以及 十六进制 转 ASCII* 非盈利组织或个人请放心转载,商业用途请征得作者同意**///ASCII 转 十六进制function asc2hex($str) {return '\x'.substr(chunk_split(bin2hex($str), 2, '\x'),0,-2);}//十六进制 转 ASCIIfunction hex2asc($str) {$str = join('',explode('\x',$str));$len = strlen($str);for ($i=0;$i<$len;$i+=2) $data.=chr(hexdec(substr($str,$i,2)));return $data;}$asc = "哈哈";$hex = asc2hex($asc);$asc = hex2asc($hex);echo "hex : ".$hex;echo "<br>";echo "asc : ".$asc;?>


保存采用utf8保存,

问题1不明白 哈哈 是utf8编码??为什么函数可以说是ascii转16进制。 结果是\xe5\x93\x88\xe5\x93\x88

我查过哈哈的ascii码的16进制表现形式是 54c8 54c8 ,明显不一样

搞不懂



------解决方案--------------------
这里用"ascii"显然不合适,"转16进制"这么说也不合适,
函数的作用其实是: 把字符串的编码用16进制的形式表示出来

所以你的疑问都有道理.

函数头上写"非盈利组织或个人请放心转载,商业用途请征得作者同意"也很搞笑,
因为这样简单的代码没有独创性, 别人不需要看也能写出一样的代码,
所以也当然不需要"征得作者同意"

探讨
PHP code
/**
*
* ASCII 转 十六进制 以及 十六进制 转 ASCII
* 非盈利组织或个人请放心转载,商业用途请征得作者同意
*
*/
//ASCII 转 十六进制
function asc2hex($str) {
return '\x'.substr(chunk_split(bin2hex($str), 2, '\x'),0,-2);
}
//十六进制 转 A……
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.