2013-01-15 162 views
0

我在/RES文件/原始(R.raw.test)文件夹包含以下内容:阅读原始文件与Unicode字符

这是一个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(); 
} 

但返回的字符串是:

这是一个Tst中

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

+1

你在哪里看到'这是一个T s t'?控制台,日志文件,图形用户界面,HTML页面,在其他地方? – jlordo

+0

他将其添加到TextView中 – Archer

+0

您是如何解决这个问题的?你能分享你的解决方案吗? @Addev – yahya

回答

2

你的代码似乎没问题。返回的字符串也可以,除了您正尝试在不支持UTF-8的查看器中查看它。我已经运行了你的代码,它是UNICODE知道的groovyConsole,它完美地显示了UTF-8字符串。

+0

我把文本放在TextView中,结果是相同的=( – Addev

1

首先,你需要确定文件/ RE的编码/原始

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

file /res/raw 

然后在

指定正确的编码
inputreader = new InputStreamReader(inputStream, "UTF-8"); 
1

嗨,我会尝试这样的事情:

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(); 

如果你想写只使用InputStreamWriterFileOutputStream和设置正确的编码......它就像魅力。

我希望我能帮助:-)

1

我有一个文件,它也给了我输出类似于'这是一个T's t',对于我来说,设置charsetName为UTF-16做诡计