从文件中读取俄语字符(javaSE)
Reading from a file Russian characters(javaSE)
以下代码适用于具有英文内容但不适用于俄文内容的文件。如何使其也适用于俄语?
try(BufferedReader fileOut = new BufferedReader(new FileReader(file))){
for(String line; (line = fileOut.readLine()) != null; ){
if(line.contains(commandString))
System.out.println(count + ": " + line);
count++;
}
}
更新:
我试着写:只有当一行包含一个词然后输出时才有效,例如:“привет”如果一行包含多个词则没有输出,例如“привет как дела”
new BufferedReader(new InputStreamReader(new FileInputStream(file), "Cp1251"))
p.s: 非常感谢解答
您需要指定编码才能读取俄语字符。不要使用 FileReader
,因为它将使用默认平台编码。
改为使用
new BufferedReader(new InputStreamReader(fileDir), "UTF8");
使用以下方法读取任何语言的任何文件的文件内容。
我做了一个FileUtil.java,这个方法是其中的一部分。它方便且效果很好...
工作代码的关键是charset:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"))
整个方法如下:
public static String getFileContent(File file) throws IOException
{
StringBuilder sb = new StringBuilder();
try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"))) {
String sCurrentLine;
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
sb.append(sCurrentLine);
}
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
以下代码适用于具有英文内容但不适用于俄文内容的文件。如何使其也适用于俄语?
try(BufferedReader fileOut = new BufferedReader(new FileReader(file))){
for(String line; (line = fileOut.readLine()) != null; ){
if(line.contains(commandString))
System.out.println(count + ": " + line);
count++;
}
}
更新:
我试着写:只有当一行包含一个词然后输出时才有效,例如:“привет”如果一行包含多个词则没有输出,例如“привет как дела”
new BufferedReader(new InputStreamReader(new FileInputStream(file), "Cp1251"))
p.s: 非常感谢解答
您需要指定编码才能读取俄语字符。不要使用 FileReader
,因为它将使用默认平台编码。
改为使用
new BufferedReader(new InputStreamReader(fileDir), "UTF8");
使用以下方法读取任何语言的任何文件的文件内容。 我做了一个FileUtil.java,这个方法是其中的一部分。它方便且效果很好...
工作代码的关键是charset:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"))
整个方法如下:
public static String getFileContent(File file) throws IOException
{
StringBuilder sb = new StringBuilder();
try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"))) {
String sCurrentLine;
while ((sCurrentLine = br.readLine()) != null) {
System.out.println(sCurrentLine);
sb.append(sCurrentLine);
}
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}