为了使JSON编码解码支持GB2312字符

el/2024/4/20 16:00:53
<?php
/********Charset.php***********/
class Charset{//gb2312转化为utf-8function gb2utf8($chars){//使用iconv()函数,把gb2312字符,转换为utf-8的字符return iconv("gb2312","utf-8",$chars);}//gb2312转化为unicodefunction gb2unicode($chars){$string = "";preg_match_all("/[\x80-\xff]?./",$chars,$array);//遍历字符串foreach($array[0] as $v){/*** 使用iconv()函数,把GB2312字符串转化为UTF-8编码* 再使用utf8_unicode()函数,返回UTF-8字符的编码值* 为返回的编码值,添加&#和;符号,形成unicode值* */$string .= "&#".$this->utf8_unicode(iconv("GB2312","UTF-8",$v)).";";}//返回最后的UNICODE值return $string;}//把单个utf-8字符转换为unicode数字值function utf8_unicode($c) {//根据字符的大小,返回字符串switch(strlen($c)) {case 1:return ord($c);case 2:$n = (ord($c[0]) & 0x3f) << 6;$n += ord($c[1]) & 0x3f;return $n;case 3:$n = (ord($c[0]) & 0x1f) << 12;$n += (ord($c[1]) & 0x3f) << 6;$n += ord($c[2]) & 0x3f;return $n;case 4:$n = (ord($c[0]) & 0x0f) << 18;$n += (ord($c[1]) & 0x3f) << 12;$n += (ord($c[2]) & 0x3f) << 6;$n += ord($c[3]) & 0x3f;return $n;}}//utf-8转为了gb2312编码function utf82gb($chars){//使用iconv()函数,把utf-8编码,转化为gb2312编码return iconv("utf-8","gb2312",$chars);}//utf-8编码,转化为unicode编码function utf82unicode($chars){//使用utf82gb()函数,返回字符的GB值$utf8 = $this->utf82gb($chars);//再使用gb2unicode()函数,返回字符的unicode值return $this->gb2unicode($utf8);}//unicode编码转化为utf-8编码function unicode2utf8($chars){$string = "";//把unicode编码的字符串进行分割$chars = explode(";",$chars);//遍历分割后的字符串foreach($chars as $char){//取得unicode编码中的数字值$unicode = substr($char,2);//使用unicode_utf8()函数,返回这个值对应的utf-8字符$string .= $this->unicode_utf8($unicode);}//返回最后的utf-8字符串return $string;}//unicode转为了gb2312编码function unicode2gb($chars){//使用unicode2utf8函数,返回与utf-8对应的字符$string = $this->unicode2utf8($chars);//再使用utf82gb()函数,返加GB2312编码的字符串return $this->utf82gb($string);}//把单个unicode数字值,转换为utf-8字符function unicode_utf8($c){$str="";//根据unicode数字值,计算并返回字符if($c < 0x80){$str.=$c;}elseif($c < 0x800){$str.=chr(0xC0 | $c>>6);$str.=chr(0x80 | $c & 0x3F);}elseif($c < 0x10000){$str.=chr(0xE0 | $c>>12);$str.=chr(0x80 | $c>>6 & 0x3F);$str.=chr(0x80 | $c & 0x3F);}elseif($c < 0x200000){$str.=chr(0xF0 | $c>>18);$str.=chr(0x80 | $c>>12 & 0x3F);$str.=chr(0x80 | $c>>6 & 0x3F);$str.=chr(0x80 | $c & 0x3F);}return $str;}
}
?>

例子:

<!---------------------------------------文件名: 6_3.php-------------------------------->
<?php
//为了使用中JSON编码解码支持GB2312字符
//可以包含charset字符编码转换类,来实现字符之间的转换
include_once("Charset.php");
//包含JSON编码解码类
include_once("json.php");
//初始化字符编码解码类
$charset = new Charset();
//初始化JSON编码解码类
$json = new JSON();
//定义需要编码的数组
$users = array(array("username"=>$charset->gb2unicode("中文"),"password"=>"1","style"=>"css1"),array("username"=>"jake","password"=>"2","style"=>"css2")
);
//使用JSON类中的encode()函数进行编码
$json_data = $json->encode($users);
echo $json_data;
?>



http://www.ngui.cc/el/4958042.html

相关文章

据说是某知名论坛的防注入函数哦!哈哈哈!

<? //discuz论坛的sql防注入函数代码参考&#xff1a; $magic_quotes_gpc get_magic_quotes_gpc(); extract(daddslashes($_COOKIE)); extract(daddslashes($_POST)); extract(daddslashes($_GET)); if(!$magic_quotes_gpc) { $_FILES daddslashes($_FILES); } //discuz论…

Linux 网卡配置文件,命令详细设置

1.配置文件 /etc/hosts(本地主机ip地址映射,可以有多个别名&#xff09;。 /etc/services(端口号与标准服务之间的对应关系&#xff09;。 /etc/sysconfig/network&#xff08;设置主机名&#xff0c;网关&#xff0c;域名&#xff09;。 HOSTANMEzjw.com(主机名&#xff09;&a…

定时重启电脑或服务器

定时重启电脑或服务器 服务器在长时间运行之后&#xff0c;系统资源的占用率特别大&#xff0c;系统运行效率大大降低。访问服务器的普通用户也会受到影响&#xff0c;需要重新启动服务器系统。但是&#xff0c;如果我每次都是去现场重启服务器系统又很不现实。作为网络管理员&…

php如何将html中的br换行符转换为文本输入中的换行符

PHP中的有个非常好的函数&#xff1a;nl2br()&#xff0c;将文本框中的换行转换为HTML页面的<br />&#xff0c;但是如何实现将html中的<br />换行符转换为文本框中的换行符呢&#xff1f;下面这几个方法将能够帮你解决这个问题。 PHP版将html中的<br />换行…

php生成随机密码的方法总结

使用PHP开发应用程序&#xff0c;尤其是网站程序&#xff0c;常常需要生成随机密码&#xff0c;如用户注册生成随机密码&#xff0c;用户重置密码也需要生成一个随机的密码。随机密码也就是一串固定长度的字符串&#xff0c;这里我收集整理了几种生成随机字符串的方法&#xff…

网页缓存控制 Cache-control 常见的取值有private、no-cache、max-age、must-revalidate 介绍

网页的缓存是由HTTP消息头中的"Cache-control"来控制的&#xff0c;常见的取值有private、no-cache、max-age、must-revalidate等&#xff0c;默认为private。其作用根据不同的重新浏览方式分为以下几种情况&#xff1a; &#xff08;1&#xff09; 打开新窗口 如果指…

php判断远程文件是否存在的办法

//php判断远程文件是否存在 function url_exists($url){$handlecurl_init($url);if(false$handle){return false;}curl_setopt($handle,CURLOPT_HEADER,false);curl_setopt($handle,CURLOPT_FAILONERROR,true);curl_setopt($handle,CURLOPT_NOBODY,true);curl_setopt($handle,C…

JavaScript实现复选框全选

方法一&#xff1a; <script type"text/javascript"> function selectIt() { form document.lzyy action event.srcElement.name for (var i 0; i < form.elements.length; i) { if (form.elements[i].name "checkbox") { e form.elem…

mysql查询ID排序问题,

经常用 where in查询的会发现&#xff0c;in()范围内的ID顺序再怎么乱输出的结果&#xff0c;都会按照从小到大的顺序输出&#xff0c;最近做东西&#xff0c;需要用到这方面了&#xff0c;以前都是到程序里判断&#xff0c;网上研究了一把可以用instr函数排序。 SELECT * FROM…

101个MySQL的调优技巧

MySQL是一个功能强大的开源数据库. 随着越来越多的数据库驱动的应用程序&#xff0c;人们一直在推动MySQL发展到它的极限. 这里是101条调节和优化MySQL安装的技巧. 一些技巧是针对特定的安装环境的&#xff0c;但这些思路是通用的. 我已经把他们分成几类&#xff0c;来帮助你掌…