Windows中文 - 编码!编码!!
时间:2011-02-18
来源:互联网
同学们近期编码问题很多,稍微总结下。
Windows的终端环境是GBK吧,读取UTF-8的编码,自然会乱码。
比如文件abc.txt是UTF-8格式的,那么如何读取它呢?
第一种方式:
使用带encoding参数的open打开和读入文件,并转换成gb2312输出:
复制代码
如上代码,<:encoding(UTF-8)表明在open时,已识别并转换了读入文件的UTF-8编码。
然后print encode("gb2312",$_)将内容用gb2312编码输出,这样就正确显示了。
第二种方式:
使用Encode模块的decode函数自己处理转换,如下:
复制代码
用普通的open打开文件,然后对文件的每一行,先用decode将内容转换成perl内部的编码格式(它的作用相当于open with "<:encoding(UTF-8)")。
然后,再调用encode将转换后的内容,以gb2312编码进行输出,这样也显示正常。
其他方式。。待总结。
其他编码之间转换,也按此类推。
Windows的终端环境是GBK吧,读取UTF-8的编码,自然会乱码。
比如文件abc.txt是UTF-8格式的,那么如何读取它呢?
第一种方式:
使用带encoding参数的open打开和读入文件,并转换成gb2312输出:
- use strict;
- use Encode;
-
- open HD,"<:encoding(UTF-8)","abc.txt" or die $!;
- while(<HD>) {
- print encode("gb2312",$_);
- }
- close HD;
然后print encode("gb2312",$_)将内容用gb2312编码输出,这样就正确显示了。
第二种方式:
使用Encode模块的decode函数自己处理转换,如下:
- use strict;
- use Encode;
-
- open HD,"abc.txt" or die $!;
- while(<HD>) {
- print encode("gb2312",decode("utf8",$_));
- }
- close HD;
然后,再调用encode将转换后的内容,以gb2312编码进行输出,这样也显示正常。
其他方式。。待总结。
其他编码之间转换,也按此类推。
作者: 兰花仙子 发布时间: 2011-02-18
回复 兰花仙子
推销一下水木社区上我的一个帖子:)
Perl实用中文处理步骤
http://www.newsmth.net/bbscon.ph ... =57467&ftype=11
用encode是字符串级别的处理编码问题,上面这个帖子是I/O级别的实用总结
欢迎仙子来水木社区Perl版指导工作,这里的flw应该就是水木的flw吧:)
推销一下水木社区上我的一个帖子:)
Perl实用中文处理步骤
http://www.newsmth.net/bbscon.ph ... =57467&ftype=11
用encode是字符串级别的处理编码问题,上面这个帖子是I/O级别的实用总结
欢迎仙子来水木社区Perl版指导工作,这里的flw应该就是水木的flw吧:)
作者: FenRagwort 发布时间: 2011-02-18
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28