免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2699 | 回复: 4
打印 上一主题 下一主题

[请教]关于GB扩展字符的GB->utf-8转化 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-26 14:42 |只看该作者 |倒序浏览
最近想把网站上的所有的内容编码由 gb -> utf-8。
本来是个简单的问题,写了以下 Perl 片段 就基本完成想法


  1. use Encode qw/from_to/;
  2.         # 开始当前文件
  3.          print '<ul><li>开始转换'.$mydir.'/'.$name.'....</li>';
  4.           open(FH, $mydir.'/'.$name);
  5.           my @data = <FH>;
  6.         close(FH);
  7.         my $data = join("", @data);
  8.         if ($data =~ /charset\=gb2312/) { $data =~ s/charset\=gb2312/charset\=utf-8/s; }
  9.         from_to($data, "gb2312", "utf8");
  10.         open(FH, ">$outdir/$name");
  11.         print FH $data;
  12.         close(FH);
  13.         print '<li>'.$outdir.'/'.$name.'convert success!</li></ul>';
  14.       # 结束
复制代码


然而,发现原来网页中有部分GB编码的“繁体字”,比如“幫助,瞭解”等,这些字为GB扩展字符,这些用Encode模块   from_to($data, "gb2312", "utf8"); 转化后变成了乱码。
请教大家有什么好的办法来转化他们成为utf-8正常显示的字符?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2007-06-26 14:43 |只看该作者
gb2312 就 gb2312,gbk 就 gbk,gb18030 就 gb18030,什么叫“gb扩展字符”啊?

论坛徽章:
0
3 [报告]
发表于 2007-06-26 14:45 |只看该作者
测试过
<code>from_to($data, "gb18030", "utf8");</code>
但是显示错误 <code>Unknown encoding 'gb18030' at G:/www/cgi-bin/utf.cgi line 51</code>

论坛徽章:
0
4 [报告]
发表于 2007-06-26 14:46 |只看该作者
原帖由 flw 于 2007-6-26 14:43 发表
gb2312 就 gb2312,gbk 就 gbk,gb18030 就 gb18030,什么叫“gb扩展字符”啊?

我表达的不是很清楚,就是这个意思。 gbk吧:)

记得 gbk就是“国标扩”的拼音缩写吧。

[ 本帖最后由 Osment 于 2007-6-26 14:49 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2007-06-26 15:15 |只看该作者
问题解决了。
是我脑筋转不过来弯了。。

想到 gb8030 想不到 gbk

看了看 Encode模块的定义。
使用
  1. from_to($data, "gbk", "utf8");
复制代码

就 OK 了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP