-1

读取文本文件时,我会读取这些字符,打印到控制台时会输出空格或�:

['\x80', '\xc3', '\x94', '\x99', '\x98','\x9d', '\x9c', '\xa9', '\xa6', '\xe2']

这些 \xHEX 字符是什么?是否有指向表格的链接来查找这些字符?

解决了:

它不是ascii文本文件,而是 unicodeutf8文件。这就是为什么我无法得到正确的字符。

对于 Java:

import java.io.*
File infile = new File('\home\foo\bar.txt');
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(infile), "UTF8"));
while ((str = in.readLine()) != null) {
System.out.println(str);
}

如果system.out.println抱怨尝试:

PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.println(str);

对于 Python,简单地说:

import codecs
infile = '\home\foo\bar.txt'
reader = codecs.open(infile,'r','urf8')
for l in reader:
  print ln
4

3 回答 3

2

这是所有 unicode 字符的链接:

http://en.wikipedia.org/wiki/List_of_Unicode_characters

此外,如果您使用的是 Eclipse,请确保您的项目“文本文件编码”设置为 UTF-8。

项目->属性->资源->文本文件编码。

我对西里尔字符有类似的问题:)

于 2013-07-22T08:59:21.507 回答
1

我可能会建议您的文本文件不是真正的“文本文件”。
前两个字节构成 unicode 'À' 字符。其余的,我猜,是不可打印的字符。您的文件似乎有一个原始的字节序列,不一定是字符。

这里有一张桌子。

于 2013-07-22T08:55:04.443 回答
1

请注意,java 以 unicode 格式 (\u...) 对字符进行编码。可以向控制台显示数字“80”,但不能显示其角色的“\x80”。

有关列表,请参阅 ascii 字符列表,例如这个

于 2013-07-22T08:56:48.293 回答