我有一个包含许多中文字符的txt文件,txt文件位于res / raw / test.txt目录中。我想读取文件,但不知怎的,我无法正确显示中文字符。这是我的代码:
try {
InputStream inputstream = getResources().openRawResource(R.raw.test);
BufferedReader bReader = new BufferedReader(
new InputStreamReader(inputstream,Charset.forName("UTF-8")));
String line = null;
while ((line= bReader.readLine())!= null) {
Log.i("lolo", line);
System.out.println("here is some chinese character 这是一些中文字");
}
} catch (IOException e) {
e.printStackTrace();
}
两个Log.i(“lolo”,行);和System.out.println(“这里是一些中文字符这是一些中文字”)不正确显示字符,我甚至无法在println()方法中看到中文字符。 我该怎么做才能解决这个问题?有人能帮助我吗?
答案 0 :(得分:2)
为了正确处理非ASCII字符,例如UTF-8多字节字符,了解这些字符的编码和显示方式非常重要。
您的控制台(输出屏幕)可能不支持显示非ASCII字符。如果是这种情况,您的UTF-8字符将显示为垃圾。有时,您可以在控制台上更改字符编码。有时不会。
即使控制台正确显示了UTF-8字符,您的字符串也可能无法正确存储中文字符。您可能认为它是正确的,因为您的编辑器会显示它们,但请确保编辑器的字符编码也支持UTF-8。
答案 1 :(得分:1)
我也想弄明白。首先,您需要使用记事本打开.txt
文件,然后点击File
- > Save as
,您会看到一个显示Enconding
的下拉菜单,因此请更改它到UTF-8
。保存文件后,您应删除文件的.txt
扩展名,然后将文件添加到路径res / raw,然后您可以从代码中将其引用为R.raw.txtFileName
。
就这一切而言,我将我的代码放在我使用汉字的地方,我可以在模拟器中显示它们。
如果您有任何其他问题,请告诉我,因为我也在开发与角色相关的东西。这是代码:
public List<String> getWords() {
List<String> contents = new ArrayList<String>();
try {
InputStream inputStream = getResources().openRawResource(R.raw.chardb);
BufferedReader input = new BufferedReader(new InputStreamReader(inputStream,Charset.forName("UTF-8")));
try {
String line = null;
while (( line = input.readLine()) != null){
contents.add(line);
}
}
finally {
input.close();
}
}
catch (IOException ex){
ex.printStackTrace();
}
return contents;
}