我打开记事本(Windows)并写
Some lines with special characters
Special: Ž?š??
Run Code Online (Sandbox Code Playgroud)
并转到另存为... "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();
Run Code Online (Sandbox Code Playgroud)
但我得到问号和类似的"特殊"字符.为什么?
编辑:我有这个输入(.txt文件中的一行)
665,Ž?š??
Run Code Online (Sandbox Code Playgroud)
和这段代码
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 …Run Code Online (Sandbox Code Playgroud) 我需要阅读用户的输入,我想支持非拉丁字母,例如Å,Ä和Ö.
BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out, "UTF-8"), true);
out.println(keyboard.readLine());
out.println("Read with charset: " + Charset.defaultCharset().name());
Run Code Online (Sandbox Code Playgroud)
当我运行此代码并输入拉丁字母时,它按预期工作(我输入内容,按回车键,然后打印出我输入的内容).但如果我尝试å我得到这个:
å
?
Read with charset: UTF-8
Run Code Online (Sandbox Code Playgroud)
如果文本以非拉丁字母结尾,我必须按两次输入,然后它不会正确显示它们.我在Netbeans的控制台中尝试了这个,并且在Windows命令提示符下都没有给出预期的结果.
我找不到UTF-8的解决方案,而是选择了ISO-8859-1.它适用于我的Netbeans控制台(绝对应该是UTF-8)和CMD,当我第一次运行时chcp 28591,更改了字体(在我的情况下是必要的)并运行我的程序.
我已经创建了从 csv 文件读取数据的代码。但是,我无法处理 \xc2\xa3 等特殊字符。
\n\n例如,My Base Cost (K\xc2\xa3)被读作My Base Cost (K\xc3\x83\xe2\x80\x9a\xc3\x82\xc2\xa3).
我可以做什么来纠正这个问题?
\n\npublic void parseCSVFile(String filename){\n\n try {\n br = new BufferedReader(new FileReader(csvDirectory + filename));\n\n while ((parsedLines = br.readLine()) != null) {\n\n String[] parsedData = parsedLines.split(csvSplitByComma);\n\n entireFeed.add(parsedData[0]);\n entireFeed.add(parsedData[1]);\n\n System.out.println(parsedData[0]);\n System.out.println(parsedData[1]);\n\n it = entireFeed.iterator();\n }\n } catch (Exception e) {\n e.printStackTrace();\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n