Perl文本编码问题

lion7beck 2010-11-10 05:19:05
为什么 binmode(FILE,"encoding(ansi)");不能把FILE所指向的txt转化为ansi编码格式??

错误信息:can not find encoding "ansi"……
...全文
228 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
iambic 2010-11-12
  • 打赏
  • 举报
回复
注意,我贴的代码是转换编码的,会修改源文件"your_file",为了安全,你试验时应该把输出定向到另外一个新文件,免得数据损坏了。
iambic 2010-11-12
  • 打赏
  • 举报
回复
好吧,我给个方法,你试试:

use strict;
use warnings;

use Encode 'from_to';

open (IN, "your_file") or die;
my $content = do {local $/; <IN>};
from_to($content, 'utf8', 'gbk'); # convert utf8 to gbk
open (OUT, ">your_file") or die;
print OUT $content;


代码里utf8和gbk,还可以填'utf16le','utf16be',你就这几种编码组合轮流试吧,应该有一种能得到你要的结果。
我猜测你需要的组合是'utf16le'和'gbk',不过也只是瞎蒙而已。
lion7beck 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 iambic 的回复:]
反正是业余的叫法,对于解决问题没有任何帮助。Windows记事本甚至.NET平台,就是用的这种业余叫法,导致一堆人根本不知道怎么解决问题了。若不晓得怎么怎么搞清楚真正的编码,解决问题就只能靠瞎蒙了。
百度百科这种还在用记事本术语的外行东西就别信了。
[/Quote]
不过我还是没弄明白:怎么把txt由Unicode转为ansi,就是用Perl自动实现“另存为-->编码”的等效操作。
lion7beck 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 iambic 的回复:]
反正是业余的叫法,对于解决问题没有任何帮助。Windows记事本甚至.NET平台,就是用的这种业余叫法,导致一堆人根本不知道怎么解决问题了。若不晓得怎么怎么搞清楚真正的编码,解决问题就只能靠瞎蒙了。
百度百科这种还在用记事本术语的外行东西就别信了。
[/Quote]
哈哈,给分!
iambic 2010-11-12
  • 打赏
  • 举报
回复
反正是业余的叫法,对于解决问题没有任何帮助。Windows记事本甚至.NET平台,就是用的这种业余叫法,导致一堆人根本不知道怎么解决问题了。若不晓得怎么怎么搞清楚真正的编码,解决问题就只能靠瞎蒙了。
百度百科这种还在用记事本术语的外行东西就别信了。
lion7beck 2010-11-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 iambic 的回复:]
再强调一遍:ANSI和UNICODE都不是编码,最多算字符集。文件的编码,一般常见的是GBK,UTF-8,UTF-16LE。
[/Quote]
我翻了相关资料,发现ANSI绝对是编码而不是字符集,详见http://baike.baidu.com/view/1273097.htm 。
至于UNICODE,它既是字符集,但同时也可以是编码方式。只是若以字符的UNICODE代码直接作为编码,会导致英文文档存储空间翻番等问题,所以基于UNICODE编码扩展出了UTF-8等编码方式。比如打开txt-->另存为-->,就可以看见最先面的“编码”有四个可选……
iambic 2010-11-11
  • 打赏
  • 举报
回复
汗,你现在就应该忘记ANSI和UNICODE这样的名字,使用GBK,UTF-8,UTF-16LE。先明白你的文件的编码,是GBK还是UTF-8还是别的什么。
lion7beck 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 iambic 的回复:]
再强调一遍:ANSI和UNICODE都不是编码,最多算字符集。文件的编码,一般常见的是GBK,UTF-8,UTF-16LE。
[/Quote]
哦,原来是字符集啊!我错了!那请问字符集如何达到我的现在的要求呢??
lion7beck 2010-11-11
  • 打赏
  • 举报
回复
lion7beck 2010-11-11
  • 打赏
  • 举报
回复
iambic 2010-11-10
  • 打赏
  • 举报
回复
再强调一遍:ANSI和UNICODE都不是编码,最多算字符集。文件的编码,一般常见的是GBK,UTF-8,UTF-16LE。
lion7beck 2010-11-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 iambic 的回复:]
什么是你心目中的“ansi编码格式”?
[/Quote]
因为A.txt是Unicode编码;B.txt是ANSI编码,我要将B.txt追加到a.txt后面,是乱码。

因此想用Perl把A.txt改为ANSI编码,再追加,再将追加后的A.txt改为Unicode编码。
iambic 2010-11-10
  • 打赏
  • 举报
回复
什么是你心目中的“ansi编码格式”?

37,738

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧