Java 读取带有unicode字符的原始文件

Java 读取带有unicode字符的原始文件,java,android,android-resources,Java,Android,Android Resources,我在/res/raw R.raw.test文件夹中有一个包含以下内容的文件: 这是一个TésêT 我想把它读成一个字符串。我目前的代码是: public static String readRawTextFile(Context ctx, int resId) { InputStream inputStream = ctx.getResources().openRawResource(resId); InputStreamReader inputreader; try

我在/res/raw R.raw.test文件夹中有一个包含以下内容的文件:

这是一个TésêT

我想把它读成一个字符串。我目前的代码是:

public static String readRawTextFile(Context ctx, int resId) {
    InputStream inputStream = ctx.getResources().openRawResource(resId);

    InputStreamReader inputreader;
    try {
        inputreader = new InputStreamReader(inputStream, "UTF-8");
    } catch (UnsupportedEncodingException e1) {
        e1.printStackTrace();
        return null;
    }
    BufferedReader buffreader = new BufferedReader(inputreader);
    String line;
    StringBuilder text = new StringBuilder();

    try {
        while ((line = buffreader.readLine()) != null) {
            text.append(line);
            text.append('\n');
        }
    } catch (IOException e) {
        return null;
    }
    return text.toString();
}
但返回的字符串是:

这是一个T�s�t


我怎样才能解决这个问题?谢谢

您的代码似乎还可以。返回的字符串也可以,只是您试图在不支持UTF-8的查看器中查看它。我已经从groovyConsole运行了您的代码,它支持UNICODE,并且可以完美地显示UTF-8字符串。

您的代码似乎还可以。返回的字符串也可以,只是您试图在不支持UTF-8的查看器中查看它。我已经从groovyConsole运行了您的代码,它支持UNICODE,并且可以完美地显示UTF-8字符串。

首先,您需要确定文件/res/raw的编码

如果在UNIX上,您可以键入以下命令

file /res/raw
然后在中指定正确的编码

inputreader = new InputStreamReader(inputStream, "UTF-8");

首先,您需要确定文件/res/raw的编码

如果在UNIX上,您可以键入以下命令

file /res/raw
然后在中指定正确的编码

inputreader = new InputStreamReader(inputStream, "UTF-8");

嗨,我想试试这样的东西:

StringBuilder str = new StringBuilder();
File file = new File("c:\\some_file.txt");
FileInputStream is = new FileInputStream(file);
Reader reader = new InputStreamReader(is, "UTF-8");
while(true){
    int ch = reader.read();
    if(ch < 0){
      break;
    }
    str.append((char)ch);
}
String myString = str.toString();
如果您想写入,只需将InputStreamWriter与FileOutputStream一起使用,并设置正确的编码。。。它像魅力一样工作


我希望我能帮上忙:-

嗨,我想试试这样的东西:

StringBuilder str = new StringBuilder();
File file = new File("c:\\some_file.txt");
FileInputStream is = new FileInputStream(file);
Reader reader = new InputStreamReader(is, "UTF-8");
while(true){
    int ch = reader.read();
    if(ch < 0){
      break;
    }
    str.append((char)ch);
}
String myString = str.toString();
如果您想写入,只需将InputStreamWriter与FileOutputStream一起使用,并设置正确的编码。。。它像魅力一样工作


我希望我能帮上忙:-

我有一个文件,它也给了我类似于“这是一个T”的输出�s�对我来说,将charsetName设置为UTF-16就完成了这项任务

我有一个文件,它也给了我类似于“这是一个t”的输出�s�对我来说,将charsetName设置为UTF-16成功了

你在哪里看到这是一个t�s�T控制台,日志文件,图形用户界面,HTML页面,其他地方?他正在把它添加到文本视图中。你是如何解决这个问题的?你能分享一下你的解决方案吗@你看到了吗这是一个T�s�T控制台,日志文件,图形用户界面,HTML页面,其他地方?他正在把它添加到文本视图中。你是如何解决这个问题的?你能分享一下你的解决方案吗@addev将文本放在文本视图中,结果相同=我将文本放在文本视图中,结果相同=