Zeal Blog - 泽欧里
梦想 就像鸡蛋
要么孵化 要么臭掉
WWW Zeal Blog

PHP下中文编码各种格式间的转换类

zeal 2005-05-16 18:19 于 PHP , 1998 字 |  + 0 - 1   English
Made In Zeal 转载请保留原始链接:http://www.zeali.net/entry/55
标签 ( Tags ):  ,  ,  , 
目前该类库可以实现的编码转换有:简体中文 GB <-> 繁体中文 BIG5 编码互换,简/繁体中文 -> 拼音单向转换, 简/繁体中文 <-> UTF8 编码转换,简/繁体中文 -> Unicode单向转换。

类源代码原作者是Hessian(solarischan@21cn.com),我合并了一下原来的Sample脚本,同时修改了一下类文件,为类构造函数增加了一个参数以便用户可以方便的在使用的时候设置配置文件路径,这样就可以把这个类包放置在任何可以被访问到的目录下,否则原来的版本下引用class.Chinese.php的文件必须和class在相同的目录下面才行。

/**
 * 中文编码集合类库
 *
 * 目前该类库可以实现,简体中文 <-> 繁体中文编码互换,简体中文、繁体中文 -> 拼音单向转换,
 * 简体中文、繁体中文 <-> UTF8 编码转换,简体中文、繁体中文 -> Unicode单向转换
 *
 * @作者         Hessian(
solarischan@21cn.com)
 * @版本         1.7
 * @版权所有     Hessian / NETiS
 * @使用授权     GPL(不能应用于任何商业用途,无须经过作者同意即可修改代码,但修改后的代码必须按照GPL协议发布)
 * @特别鸣谢     unknow(繁简转换代码片断)
 * @起始         2003-04-01
 * @最后修改     2005-07-26
 * @访问         公开
 *
 * 更新记录
 *
 * ver 1.7 2005-07-26
 * 修改了while循环导致的bug。此bug当字符串最后一个字符为"0"的时候将处理错误。
 * 受影响方法: CHStoUTF8() , CHStoUNICODE()
 * (by Zeal Li ,http://www.zeali.net/)
 *
 * ver 1.6 2005-05-16
 * 构造函数增加了一个参数以便用户可以方便的在使用的时候设置配置文件路径
 * (by Zeal Li ,http://www.zeali.net/)
 *
 * ver 1.5 2003-06-06
 * 增加 UTF8 转换到 GB2312、BIG5的功能。
 *
 * ver 1.4 2003-04-07
 * 增加 当转换HTML时设定为true,即可改变charset的值。
 *
 * ver 1.3 2003-04-02
 * 增加 繁体中文转换至拼音的功能。
 *
 * ver 1.2 2003-04-02
 * 合并 简体、繁体中文转换至UTF8的函数。
 * 修改 简体中文转换至拼音的函数,返回值更改为字符串,每一个汉字的拼音用空格分开
 * 增加 简体中文转换为 UNICODE 的功能。
 * 增加 繁体中文转换为 UNICODE 的功能。
 *
 * ver 1.1 2003-04-02
 * 增加 OpenFile() 函数,支持打开本地文件和远程文件。
 * 增加 简体中文转换为 UTF8 的功能。
 * 增加 繁体中文转换为 UTF8 的功能。
 *
 * ver 1.0 2003-04-01
 * 一个集合了中文简体,中文繁体对应各种编码互换的类库已经初步完成。
 */

下载完整源代码包(filesize: 132,522 bytes) : 下载源代码 chinese.rar

This Entry was Last Modified on 2007-05-24 17:15
引用本文(TrackBack): 此功能无限期关闭ing ... 如有引用请在文中标明出处并提供超链接  
14 条评论:
- aman () 于 2005-06-17 12:42
utf8
- aman () (link) 于 2005-06-21 14:49
人理我,算了!!!

自己另外
- zeal (link) 于 2005-06-21 15:08
没看到你的留言阿,不好意思?你发的时候是发的纯文本还是html邮件?
- aman () 于 2005-06-22 13:55
喔,
- zeal (link) 于 2005-06-22 16:15
用这个类单纯的进行utf8->big5的转换应该没有问题。问题应该还是在于phpnuke后续的操作上吧。我看你的站点上已经提供了自己的utf82big5的解决方法啦? :) 实际上只要有字符对应表,代码实现都是大同小异的。根据需要写一个轻量级一点的函数来满足自己的需要更方便。
- Peter 于 2006-01-18 07:32
有没有繁体GBK到简体GBK的函数?
谢谢
- zeal (link) 于 2006-01-18 09:44
这里有一篇利用Windows API实现无码表进行GB <-> GBK <-> BIG5之间的转换(没有实际测试过,而且只适用于Windows环境): http://tech.163.com/05/1014/14/201GGAI80..
这里有人提供了GB <-> GBK <-> BIG5 的PHP版本,不过作者并没有直接把码表放出来提供下载,你可以按照文中的email地址去联系一下: http://www3.3800cc.com/Article/web/PHP/p..
- Peter 于 2006-01-18 23:56
这个类相当不错啊,我昨天晚上看了一下,修改了一个问题:
一个网页由简体和繁体的中文以及英文,甚至德文混排的,当然是UTF-8编码,
我想把它换成拼音的,在现有的类的基础上,
如果 UTF-8 换 GB2312 就不能换繁体,因为码表没有,
如果 UTF-8 换 BIG5 就不能换简体,
我的修改是,首先 UTF-8 换 GB2312 ,如果码表找不到那就去繁体码表去找,然后把繁体换简体,最后生成拼音。成功了。。。

另外换拼音的函数,我也修改了一下,我没有用一个数组存拼音,因为如果一个英文单词转换输出时,字母之间会有空格。

还有一个建议就是,把悉构函数改一下,我觉得把待转换的字符串放在悉构函数是不恰当的。
因为如果我有很多个字符串要转的话,那就要不停的定义新对象。我个人喜欢的是把字符串放在一个方法里面。
这样,用$chinese->getStr ("UTF-8" , "PinYin" ,$str ) 就可以得到想要的字符串了。

如果有时间,我把这个类整理一下,不过首先要感谢前面那么多位作者的辛勤工作。。。
- agogo () 于 2006-06-19 15:08
[这里有人提供了GB <-> GBK <-> BIG5 的PHP版本,不过作者并没有直接把码表放出来提供下载,你可以按照文中的email地址去联系一下: http://www3.3800cc.com/Article/web/PHP/p..
]

請問,還有其他的連結麼?上面的已經連 不上
我需要「GB <-> GBK <-> BIG5 的PHP版本」
- Yanni () (link) 于 2006-12-16 22:57
我正在寻找简体繁体到拼音的php类,找到了这里

试用了一下,基本可以

但是有些问题。例如 无法将 璽 玺 等转正确,估计是不是 table库的问题呢?
- zeal (link) 于 2006-12-17 20:17
因为字符对应码表都是手工进行对应的,如果发现有的字符转码不正确或找不到的话,你需要自己去更新table表的对应关系。
- helen () 于 2007-05-04 23:20
How can I fine more proxy web. I need to use URL.
- water 于 2008-09-05 17:12
这个码表不全或是有错,在utf8 > gb2312时有挺多错误.

如 ——转换成了 €€€€,还有一些中文字也会这样.
- zeal (link) verified 于 2008-09-05 17:19
是的,一般来说这个码表会用作繁简体的转化(也不是完全正确)。像从utf-8转gb2312这样单纯字符集的转化最好还是直接用iconv或mb来做更高效。
对于这篇日志您有什么想法?我想听听您的高见。
如果您不是没有思想的机器Spammer,请告诉我 4 + 8 =
然后任选以下两种方式之一告诉我您的身份:
1. 使用您的 OpenID
2. 使用传统留言格式
(必填) 名字
如何称呼您?
(选填) URL
在此填写您的 Blog / Homepage 的地址,我将非常乐于访问
(选填) Email
Email地址将在经过防SPAM处理后显示在页面。如果您不希望公开自己的Email,请略过此栏
并写下您的见解:
(由于需要进行SPAM过滤,如果评论提交速度慢请耐心等待)
记住我?

  如何进行评论                   当有新回复时给我发送邮件通知
除了 <b> 和 <i> 之外,其他的HTML标签都将从您的评论中去除. URL 或 Email 地址会被自动加上链接.
当您点击发表或者预览之后,系统会自动保存您此次评论的内容,以便当网络原因发表失败时直接按Ctrl-V重新粘贴上次评论内容。
注意:快捷键及自动拷贝功能仅对IE浏览器有效。
发贴统计

Tot 622/1368

日志存档
2008年
2007年
2006年
本 Blog 原创内容
遵循以下授权:

Creative Commons
(创作共用) CC

署名-非商业性
-相同方式分享
Zeal Blog 基于
Powered byPivot - 1.24.1: 'Arcee'
Pivot1.24.1
开发
Launched @
2005-04-27
 里,居也。——《说文》    里,邑也。——《尔雅》。李注:“居之邑也。”沪ICP备05024379号 Back To Home All Links Loading