Java 扩展ascii表的读线和编码
你好 我有一个带有西班牙语单词的ASCII文件。它们只包含介于A和Z之间的字符,加上¨ASCII码165()。 我使用以下源代码获取此文件:Java 扩展ascii表的读线和编码,java,android,Java,Android,你好 我有一个带有西班牙语单词的ASCII文件。它们只包含介于A和Z之间的字符,加上¨ASCII码165()。 我使用以下源代码获取此文件: InputStream is = ctx.getAssets().open(filenames[lang_code][w]); InputStreamReader reader1 = new InputStreamReader(is, "UTF-8"); BufferedReader reader = new BufferedReader(reader1,
InputStream is = ctx.getAssets().open(filenames[lang_code][w]);
InputStreamReader reader1 = new InputStreamReader(is, "UTF-8");
BufferedReader reader = new BufferedReader(reader1, 8000);
try {
while ((line = reader.readLine()) != null) {
workOn(line);
// do a lot of things with line
}
reader.close();
is.close();
} catch (IOException e) { e.printStackTrace(); }
这里我称之为workOn()的函数应该从字符串中提取字符代码,如下所示:
private static void workOn(String s) {
byte b;
for (int w = 0; w < s.length(); w++) {
b = (byte)s.charAt(w);
// etc etc etc
}
}
private static void workOn(字符串s){
字节b;
对于(int w=0;w
不幸的是,这里发生的事情是,当b代表字母时,我无法将其识别为ASCII码。b的值对于任何ascii字母都是正确的,并且在处理ñ时返回-3,即带符号的253或ascii字符²。没有什么类似于
这里发生了什么?我应该如何得到这个简单的ASCII码
让我生气的是我找不到正确的编码。甚至,如果我去浏览UTF-8表()ñ是209dec,253dec是ý,165dec是¥。再说一次,不是我所需要的
所以。。。请帮帮我!:(您确定您正在读取的源文件是UTF-8编码的吗?在UTF-8编码中,所有大于127的值都是为多字节序列保留的,并且它们永远不会独立存在 我的猜测是,您正在读取的文件是使用原始IBM PC字符集“code page 237”编码的。在该字符集中,ñ由十进制165表示 许多现代系统使用ISO-8859-1,这恰好相当于Unicode字符集的前256个字符。在这些系统中,字符是十进制209。在一篇评论中,作者澄清了209实际上在文件中 如果文件真的是UTF-8编码的,那么¨将表示为一个双字节序列,既不是值165也不是值209 基于上述假设,即文件是ISO-8859-1编码的,您应该能够使用以下方法解决这种情况:
InputStreamReader reader1 = new InputStreamReader(is, "ISO-8859-1");
这将转换为Unicode字符,然后您应该找到由十进制209表示的字符ñ。您可以在hex editor或显示原始字节的东西上查看您的文件吗?我怀疑253不是文件中的字节(因为您将流读取为UTF-8)是的,可能是……实际上这是我的问题:/正如你建议的那样,我使用十六进制编辑器查看,文件中的字符编码为209。请注意,没有“ASCII代码165”这样的东西。ASCII仅定义代码0-127;代码128-255仅在扩展ASCII的编码中定义(如CP1252、ISO 8859-1),因此它们的含义因您使用的编码不同而有所不同。嗯,我在Android上工作,我得到了一个不受支持的编码异常。我在哪里找到所有可能的编码?@BeppiMenozzi答案的作者,虽然您的文件包含字节253,因此他认为它可能是一些模糊的IBM PC代码页。现在我们知道它是209,因此,
“ISO-8859-1”
是正确的参数(我希望它在任何地方都能得到支持)。感谢Anton,它最终似乎起到了作用。那么,在处理其他字符时,如Ü或Ü?@BeppiMenozzi,我是否也应该使用相同的代码页?任何转换为八位字节的字符数据都将被编码为一种编码。如果您有“纯文本”文件,但您不知道编码,您有错误。最好强制使用编码(通常为UTF-8)或使用自描述数据格式(例如JSON、XML等)