+ -
当前位置:首页 → 问答吧 → [07-12-8更新]字符编码 中文乱码 json escape unescape

[07-12-8更新]字符编码 中文乱码 json escape unescape

时间:2007-09-08

来源:互联网

2007-12-8:
 由于昨天的教训,array_open处写的太乱,今天早上灵感突然来了,于是重写array_open函数,并去掉了get_pos函数,取而代之的是string_endpos()函数,而且可以和string_find共用
因为不是出现错误而更改,所以又上传了一个包
charset1208.rar (140.15 KB)
charset1208.rar (140.15 KB)
下载次数: 432
2007-12-8 07:55


2007-12-7:
 修改了array_open处严重错误,感谢XMUmeyu在18#提出错误
 也是今天花一天时间 在算法上过不去 差点和别人打架
 算法的优化以后在说,脑细胞已不足
charset.rar (140.42 KB)
charset.rar (140.42 KB)
下载次数: 1121
2007-12-7 16:32


2007-11-21:
 修改了escape unescape的几处bug
 解决了string_find一处bug
 优化getpos中一处算法

可用方法
Charset::convert(string input,string incharset,string outcharset)
Charset::unescape(string escaped,string outcharset)
Charset::escape(string string,string incharset)
Charset::jsondecode(string encoded,string outcharset)
Charset::jsonencode(mix value,string incharset)
Charset::pinYin(string chinese,string incharset)
复制PHP内容到剪贴板
PHP代码:

<?php
/**
* 最后更新于 2007-8-21 12:05 By muqiao
* @author muqiao
* 说明:
* jsonencode 有参考Services_JSON 但有很大区别 此处可以将utf-8 gb2312 big5都可以jsonencode
* jsondecode 自己原创 该算法是模拟目录读取的方法 
*   可以将json中中文unicode编码unescape为gbk big5 utf8 
*/
define('TABLE_DIR','./table');
define('USEEXISTS',FALSE);//是否使用系统存在的php内置编码转换函数
//其实php内置编码转换函数转换的不够好
class Charset{
        static public function convert($source,$source_lang,$target_lang='utf-8');
        static public function unescape($str,$charset='utf-8');
        static public function escape($str,$charset='utf-8');
        static public function jsondecode($encoded,$charset='utf-8');
        static public function jsonencode($var,$charset=NULL);
        static public function PinYin($str,$charset='utf-8');
}        
//详细见压缩包
?>

[ 本帖最后由 muqiao 于 2007-12-8 07:59 编辑 ]

作者: muqiao   发布时间: 2007-09-08

好东西。。感谢分享。。

作者: scauren   发布时间: 2007-09-08

多看看,多学习

作者: wedypei   发布时间: 2007-09-10

实用, 收藏了

作者: cator   发布时间: 2007-09-10

:)  不错
先下来看看。

作者: 特蓝克斯   发布时间: 2007-09-12

没有pinyin.php之类的,是不是少了一个文件夹里的文件?

作者: moufer   发布时间: 2007-09-12

有啊 你只是复制本页代码肯定用不了 要下载 本页的包

作者: muqiao   发布时间: 2007-09-12

这个帖子没给我加精
真是太让我失望了

着可是我的原创帖,以前我很垃圾的帖都加了
这个咋不加呢

作者: muqiao   发布时间: 2007-10-21

不要发牢骚了,楼主,我刚刚看到,鼓励一下你,希望继续发表原创帖子!~~

作者: forest   发布时间: 2007-10-21

非常不错的帖子~ LZ继续加油

作者: edwardhey   发布时间: 2007-10-22

如此冷落
是不是要用php4重写一个才有人看

作者: muqiao   发布时间: 2007-11-16

顶下

作者: muqiao   发布时间: 2007-11-21

赞一个

作者: superpower   发布时间: 2007-11-22

我没看懂啊,这个帖子是做什么功能的?

作者: skyfen   发布时间: 2007-11-24

怎么用呢!

作者: skyfen   发布时间: 2007-11-24

不好意思,知道怎么用它了。谢谢你啊。实用,不错,我顶

作者: skyfen   发布时间: 2007-11-24

好贴,应该顶!

作者: pets511   发布时间: 2007-12-03

array_open函数处理有点问题,

当数组长度大于1时就出错了,

$b = array(0 => array('审核', 'AUDITING'),
               1 => array('正常', 'ACTIVATED'),
               2 => array(array('正常', 'ACTIVATED'), array('审核', 'AUDITING'))
                         );
var_dump(Charset::jsondecode(Charset::jsonencode($b)));

这样修改了一下暂时可以支付多维数组和长度大于1的数组,
但不知道会不会引起其他问题,没细查,楼主看一下
...
elseif($newpos===FALSE){
while($lastpos = getpos($string,$end,$endpos+1))
$endpos = $lastpos;
$i-=1;
continue;
...
}

作者: XMUmeyu   发布时间: 2007-12-06

明天更新传上来 还修改了空白问题

作者: muqiao   发布时间: 2007-12-06

先收藏,有时间好好研究

作者: tc318   发布时间: 2007-12-06

作者: muqiao   发布时间: 2007-12-07

相当不错,收藏

作者: yiyun8541   发布时间: 2008-03-10

好东西,可是我怎么都用不了...

作者: yhttech   发布时间: 2008-04-13