2013-01-15 96 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做詭計