PHP中实现汉字基转换的原理分析
1.汉字转换为十进制的原理分析在GBK编码中,一个汉字由两个字符组成。获取中文字符串的方法如下:复制代码如下: $string='不要迷恋哥哥';$ length=strlen($ string);for($ I=0;$ i $长度;$ I){ if(order($ string[$ I])127){ $ result[]=order($ string[$ I])。' '.order($ string[$ I]);} } var _ dump($ result);
由于一个汉字由两个字符组成,如果通过order()函数得到的字符的ASCII值大于127,则可以确定当前字符是汉字的前半部分,需要得到汉字的后半部分。当然这个方法要结合具体的开发环境。如果有一个字符的ASCII值大于127,这种方法显然是不正确的。PHP中汉字转换为十进制的原理是通过一个for循环得到一个汉字的两个字符,然后使用order()函数将每个字符转换为十进制。他们是:布[178 187]姚[210 170]范[195 212]爱[193 181]兄[184 231] 2。汉字转换为十六进制的原理分析。使用UltraEdit开发工具,可以直接查看汉字的十六进制,如下图所示,并查看“不要迷恋哥哥”这五个字的十六进制。
由上图可知,每个汉字对应的十六进制字符有:no B2BB、D2AA、C3D4、C1B5、b8e7pph。实现汉字到十六进制转换的原理是先用order()函数取出每个汉字的十进制。详见【PHP函数章节掌握order()和chr()函数的应用】。然后用dechex()函数将每个汉字转换成十六进制的示例源代码,复制代码如下: $string='不要迷恋哥哥';$ length=strlen($ string);echo $ string$ result=array();//十进制表示($ I=0;$ i $长度;$ I){ if(order($ string[$ I])127){ $ result[]=order($ string[$ I])。' '.order($ string[$ I]);} } var _ dump($ result);//十六进制$ strings=array();foreach($ result as $ v){ $ dec=explode(',$ v);$strings[]=dechex($dec[0])。' '.dechex($ dec[1]);} var _ dump($ strings);结果如下。
通过上述方法,将汉字转换为十六进制,输出结果可以与UltraEdit开发工具得到的十六进制进行比较。3.汉字转换为二进制和八进制的原理分析实现汉字转换为二进制和八进制与上述十六进制转换原理相同,只是转换功能不同。结合上述示例代码,实现了以下汉字到二进制的转换。方法如下:复制代码如下: $ strings=array();foreach($ result as $ v){ $ dec=explode(',$ v);$strings[]=decbin($dec[0])。' '.decbin($ dec[1]);} var _ dump($ strings);结果如下:。
通过复制如下代码将汉字转换为八进制: $ strings=array();foreach($ result as $ v){ $ dec=explode(',$ v);$strings[]=煎服($dec[0])。' '.煎服($ dec[1]);}结果如下:。
了解在PHP中实现汉字转换的原理,然后使用PHP内置函数urldecode()通过组合将十六进制字符串转换成正常的汉字。请关注下一期汉字编码研究系列中urldecode()和urlencode()函数的字符编码原理。
版权声明:PHP中实现汉字基转换的原理分析是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。