【发布时间】:2011-01-04 19:53:01
【问题描述】:
我打开记事本(Windows)并写
Some lines with special characters
Special: Žđšćč
然后转到另存为...“someFile.txt”,Encoding 设置为 UTF-8。
在 Java 中我有
FileInputStream fis = new FileInputStream(new File("someFile.txt"));
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader in = new BufferedReader(isr);
String line;
while((line = in.readLine()) != null) {
printLine(line);
}
in.close();
但我得到问号和类似的“特殊”字符。为什么?
编辑:我有这个输入(.txt 文件中的一行)
665,Žđšćč
还有这段代码
FileInputStream fis = new FileInputStream(new File(fileName));
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader in = new BufferedReader(isr);
String line;
while((line = in.readLine()) != null) {
Toast.makeText(mContext, line, Toast.LENGTH_LONG).show();
Pattern p = Pattern.compile(",");
String[] article = p.split(line);
Toast.makeText(mContext, article[0], Toast.LENGTH_LONG).show();
Toast.makeText(mContext, Integer.parseInt(article[0]), Toast.LENGTH_LONG).show();
}
in.close();
Toast 输出(对于不熟悉 Android 的人来说,Toast 只是一种在屏幕上显示带有特定文本的弹出窗口的方法)很好。控制台显示“奇怪的字符”(可能是因为控制台窗口中的编码)。但它在解析整数时失败,因为控制台这么说 (warning: toast output is just fine) - Problem?
似乎字符串包含一些 Toast 无法显示/呈现的“奇怪”字符,但是当我尝试解析它时,它崩溃了。有什么建议吗?
如果我将 ANSI 放在记事本中,它可以工作(整数解析)并且没有上图中的奇怪字符,但是我的特殊字符当然不能工作。
【问题讨论】:
-
printLine(line) 函数中有什么?
-
while((line = in.readLine()) != null)- Java 甚至允许你这样做吗?我认为在 Java 中,赋值不被视为表达式...... -
@Will printLine 只是将它打印到我的调试器 (Eclipse) - 在这种情况下,第二行变为“01-04 20:01:23.394: VERBOSE/line(32246): Special: ŽÄÅ¡ÄÄ”
-
while((line = in.readLine()) != null) - 是的,你可以这样做 Eric。 while 循环正在评估的条件是 (A != null),其中 A 是从 in 流中读取一行的结果。
-
实际上我的问题有点不同,实际上我的文件名是Žđšćč,我收到错误 FileInputStream fis = new FileInputStream(new File("Žđšćč.txt"));请帮忙
标签: java android eclipse file-io character-encoding