如何在 Android 中将 ASCII 字符转换为字符串?

3

我正在将文本加载到TextView中,但问题是文本充满了ASCII字符,所以当文本加载到TextView时,我无法看到任何内容或者显示完全不同的字符。例如,字符“ó”显示为一个黑色方块内的“?”。

我的问题是,如何将ASCII字符转换为字符串?

谢谢您的帮助。


2
请发布加载文本的代码。 - FD_
1
文本编码可能是什么? - Ankit
在尝试解决问题之前,您应该了解ASCII、Unicode、编码和字符串是什么。您提供的示例不是ASCII。 - Simon
简短回答:使用http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#String(byte[], java.nio.charset.Charset)和“正确”的字符集。 "windows-1252" (https://en.wikipedia.org/wiki/Windows-1252) 目前在Android上受支持;可以尝试使用它。 - fadden
1个回答

0

€ 不是 ASCII 字符。相反,您可能在源文件上使用了 Windows-1252 编码或类似编码。在此编码中,€ 被映射到字符 128,而在 Unicode 中,这是一个控制字符。

编辑:由于明显可以看出文本是从互联网加载的,并且不可修改等原因,因此以下代码可能有效:

InputStreamReader reader = new InputStreamReader(
        yourInputStream, "windows-1252"); 
        // or what ever seems to be the correct encoding!

StringBuilder builder = new StringBuilder();

while (reader.ready())
{
    builder.append(reader.read());
}
reader.close();

String string = builder.toString();

哦,对不起,你是正确的。但是还有一些其他的字符(ó,BEL-在记事本++中显示),它们是ASCII字符,并且显示相同。 - adamhala007
不,ó 不是 ASCII 字符。请将您的文件保存为 UTF-8 编码。 - Antti Haapala -- Слава Україні
但我在这个网页上看到了它,在“扩展ASCII代码”标题下:http://www.asciitable.com/ - adamhala007
你是正确的,然而扩展ASCII并不是标准,标准的US-ASCII只有7位,扩展ASCII有第8位设置,并且存在许多针对“扩展”ASCII的操作系统/平台/语言编码。 "Windows-1252"(Windows Latin-1)是一个不错的选择。所示的"ISO-8859-1"(Latin-1)是一个非常美国中心化/历史性的观点。 - Joop Eggen
你建议要做些什么?那个文件已经给定,我不认为我能够对它进行任何更改,因为我的应用程序是从网页上加载它的。有没有一种可以将加载的文本转换成可读形式的代码? - adamhala007
那你为什么不问呢? - Antti Haapala -- Слава Україні

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接