PHP 中文处理技巧

折腾了一天的时间,才弄出点眉目来。
做AJAX应用或Flash应用,提交中文内容到后台,涉及到编码解码(encode、decode)及编码格式的转换。
网上的PHP端escape unescape函数建议不要用,它把中英文混合时的英文过滤掉了,我是莫名其妙了N久啊,建议用unicode_urldecode这个。
再就是编码格式的转换,这主要涉及数据的存储和客户端返回,用iconv就搞定,这个函数似乎是从C++中借鉴来的。


代码如下:

function unicode_urldecode($url)
{
preg_match_all('/%u([[:alnum:]]{4})/', $url, $a);
foreach ($a[1] as $uniord)
{
$dec = hexdec($uniord);
$utf = '';
if ($dec < 128)
{
$utf = chr($dec);
}
else if ($dec < 2048)
{
$utf = chr(192 + (($dec - ($dec % 64)) / 64));
$utf .= chr(128 + ($dec % 64));
}
else
{
$utf = chr(224 + (($dec - ($dec % 4096)) / 4096));
$utf .= chr(128 + ((($dec % 4096) - ($dec % 64)) / 64));
$utf .= chr(128 + ($dec % 64));
}
$url = str_replace('%u'.$uniord, $utf, $url);
}
return urldecode($url);
}

(0)

相关推荐

  • perl 中文处理技巧

    Perl从5.6开始已经开始在内部使用utf8编码来表示字符,也就是说对中文以及其他语言字符的处理应该是完全没有问题的.我们只需要利用好Encode这个模块便能充分发挥Perl的utf8字符的优势了. 下面就以中文文本的处理为例进行说明,比如有一个字符串"测试文本",我们想要把这个中文字符串拆成单个字符,可以这样写: use Encode; $dat="测试文本"; $str=decode("gb2312",$dat); @chars=split

  • PHP 中文处理技巧

    折腾了一天的时间,才弄出点眉目来. 做AJAX应用或Flash应用,提交中文内容到后台,涉及到编码解码(encode.decode)及编码格式的转换. 网上的PHP端escape unescape函数建议不要用,它把中英文混合时的英文过滤掉了,我是莫名其妙了N久啊,建议用unicode_urldecode这个. 再就是编码格式的转换,这主要涉及数据的存储和客户端返回,用iconv就搞定,这个函数似乎是从C++中借鉴来的. 复制代码 代码如下: function unicode_urldecode

  • django模型中的字段和model名显示为中文小技巧分享

    简单方法: models.py 复制代码 代码如下: class IceCreamBar(models.Model):     title = models.CharField(max_length=200,db_index=True,verbose_name="名称")         shell = models.CharField(max_length=100,verbose_name='外皮')         filling = models.CharField(max_le

  • winVista系列技巧之各种中文输入法的使用

    输入法是我们工作必不可少的工具,和Windows XP一样,Vista中有些时候输入法也不能很好用,的些时候我们会发现Windows Vista下无法正常使用五笔输入,紫光拼音,拼音加加等.尤其是在IE浏览器里运行的时候.<--NEWSZW_HZH_BEGIN-->    <--NEWSZW_HZH_END--> 这时候一般是由于IE保护模式的作用,由于IE保护模式依赖于UAC.UIPI和MIC的作用,所以大概可以认为是UAC.UIPI或者MIC的安全功能导致这些输入法出现问题.

  • Angular.js回顾ng-app和ng-model使用技巧

    Angular.js中index.html简单结构: <!doctype html> <html ng-app> <head> <script src="http://code.angularjs.org/angular-1.0.1.min.js"></script> </head> <body> Your name: <input type="text" ng-model=&

  • Python使用中文正则表达式匹配指定中文字符串的方法示例

    本文实例讲述了Python使用中文正则表达式匹配指定中文字符串的方法.分享给大家供大家参考,具体如下: 业务场景: 从中文字句中匹配出指定的中文子字符串 .这样的情况我在工作中遇到非常多, 特梳理总结如下. 难点: 处理GBK和utf8之类的字符编码, 同时正则匹配Pattern中包含汉字,要汉字正常发挥作用,必须非常谨慎.推荐最好统一为utf8编码,如果不是这种最优情况,也有酌情处理. 往往一个具有普适性的正则表达式会简化程序和代码的处理,使过程简洁和事半功倍,这往往是高手和菜鸟最显著的差别.

  • 编程人员阅读代码的一些小技巧分享

    代码阅读的必要性 阅读别人的代码作为研发人员是一件经常要做的事情.一个是学习新的编程语言的时候通过阅读别人的代码是个最佳的学习方法,另外是积累编程经验.如果你有机 会阅读一些操作系统的代码会帮助你理解一些基本的原理.更有就是在你作为一个质量确保人员或一个小领导的时候如果你要做白盒测试的时候没有阅读代码的能力 是不能完成相应的任务.最后一个就是如果你中途接手一个项目的时候或给一个项目做售后服务的时候是要有阅读代码的能力的. 收集所有可能收集的材料 阅读代码要做的第一件事情是收集所有和项目相关的资料

  • PHP实现json_decode不转义中文的方法

    本文实例讲述了PHP实现json_decode不转义中文的方法.分享给大家供大家参考,具体如下: 默认情况下PHP的 json_decode 方法会把特殊字符进行转义,还会把中文转为Unicode编码形式. 这使得数据库查看文本变得很麻烦.所以我们需要限制对于中文的转义. 对于PHP5.4+版本,json_decode函数第二个参数,可以用来限制转义范围. 要限制中文,使用JSON_UNESCAPED_UNICODE参数. json_encode($a, JSON_UNESCAPED_UNICO

  • 收集的48个Shell脚本小技巧

    本文收集了一堆的shell脚本技巧,我说过,我写博客主要是作一些学习笔记,方便自己查阅,所以,我会搞出这么一篇文章,也没有什么不可理解的.关于这些技巧的出处,诶,我也忘了,可能来自theunixschool. commandlinefu.酷勤网和igigo.net,当然了,也有部分是我自己的经验心得,管他呢,进了我的脑子就是我的了. 0. shell 调试 复制代码 代码如下: sh -x somefile.sh 在somefile.sh 文件里加上set+x set-x 1. 用 &&

  • DB2编程序技巧 (八)

    正在看的db2教程是:DB2编程序技巧 (八).4.2 创建Database create database head using codeset IBM-eucCN territory CN; 这样可以支持中文. 4.3 手工做数据库远程(别名)配置 db2  catalog tcpip  node   node1  remote   172.28.200.200 server  50000 db2  catalog db    head   as     test1 at  node   n

随机推荐