【发布时间】:2013-02-02 15:45:31
【问题描述】:
我在从 perl 文件中读取西里尔字符时遇到问题。
文本文件用记事本编写,包含“абвгдежзийклмнопрстуфхцчшщъьюя”。 这是我的代码:
#!/usr/bin/perl
use warnings;
use strict;
open FILE, "text.txt" or die $!;
while (<FILE>) {
print $_;
}
如果我使用 ANSI 编码保存文本文件,我会得到:
рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·№■
如果我使用 UTF-8 编码保存它,并使用包 Encode 中的函数 decode('UTF-8', $_),我会得到:
Wide character in print at test.pl line 11, <TEXT> line 1.
还有一堆不可读的字符。
我在 Windows 7x64 中使用命令提示符
【问题讨论】:
-
文件使用了什么编码?你的终端使用什么编码?
-
我在 Windows 7 中使用命令提示符
-
输入
chcp并将cp添加到获得的数字以得到我第二个问题的答案。 (例如cp437对我来说。)我的第一个问题呢? -
第一个问题:我尝试了 2 种编码 8 位 ansi 和 utf-8。第二题cp866
-
"ANSI" 不是编码。 cp1251,可能。