【问题标题】:How to convert ASCII characters to string in Android?如何在 Android 中将 ASCII 字符转换为字符串?
【发布时间】:2013-07-30 16:41:53
【问题描述】:

我正在将文本加载到 TextView,但问题是文本充满了 ASCII 字符,因此当文本加载到 TextView 时,我什么也看不到,或者它完全显示了其他字符。例如,用“?”代替字符“ó”显示在黑色方块内。

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

感谢您的帮助。

【问题讨论】:

  • 请贴出加载文本的代码。
  • 文本编码可能是什么?
  • 在尝试解决您的问题之前,您应该阅读并理解什么是 ASCII、Unicode、编码和字符串。您给出的示例不是 ASCII。
  • 简短回答:使用 docs.oracle.com/javase/6/docs/api/java/lang/…, java.nio.charset.Charset) 和“正确”字符集。 Android 目前支持“windows-1252”(en.wikipedia.org/wiki/Windows-1252);试试看。

标签: java android string ascii


【解决方案1】:

€ 不是 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-这在 Notepad++ 中显示)是 ASCII 字符,它向我显示相同
  • 不,ó 不是 ASCII 字符。以 UTF-8 编码保存您的文件。
  • 但是我在这个网页上看到它的扩展 ASCII 代码标题:asciitable.com
  • 你是对的,但是扩展 ASCII 是 no 标准,标准 US-ASCII 是 7 位,扩展 ASCII 设置了第 8 位,以及多种操作系统/平台/ “扩展”ASCII 存在语言编码。 “Windows-1252”(Windows Latin-1)是一个不错的选择。所示的“ISO-8859-1”(Latin-1)是一个非常以美国为中心/历史的观点。
  • 你建议做什么?该文件已给出,我认为我无法更改其中的某些内容,因为我的应用程序从网页加载它。是否有某种代码能够将加载的文本转换为可读形式?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-21
  • 2016-07-18
  • 2011-07-17
  • 2018-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多