我打开Windows系统的记事本,然后写入:
Some lines with special characters
Special: Žđšćč
请点击 另存为... 并将文件名设置为 "someFile.txt",同时选择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();
对于那些不熟悉Android的人来说,Toast输出(Toast是一种在屏幕上显示特定文本的弹出方法)很好。控制台显示“奇怪的字符”(可能是因为控制台窗口的编码问题)。但解析整数时失败,因为控制台显示了这个(warning: toast output is just fine
)- 问题?
似乎该字符串包含一些无法显示/渲染的“奇怪”字符,但当我尝试解析它时,它会崩溃。有什么建议吗?
如果在记事本中使用ANSI,则可以正常工作(整数解析),并且没有像上面图片中那样的奇怪字符,但当然我的特殊字符无法正常工作。
while((line = in.readLine()) != null)
- Java真的允许这样做吗?我以为在Java中,赋值不被视为表达式... - Eric