1

/res/raw (R.raw.test) フォルダーに次の内容のファイルがあります。

これはテセです

文字列に読み込みたい。私の現在のコードは次のとおりです。

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です

どうすればこれを解決できますか? ありがとう

4

4 に答える 4

2

あなたのコードは問題ないようです。サポートされていないビューアで表示しようとしている場合を除いて、返される文字列も問題ありませんUTF-8groovyConsoleUNICODE対応のコードを実行しましたが、UTF-8文字列が完全に表示されます。

于 2013-01-15T10:04:52.740 に答える
1

まず、ファイル /res/raw のエンコーディングを決定する必要があります。

UNIX の場合は、次のコマンドを入力できます。

file /res/raw

そして、適切なエンコーディングを指定します

inputreader = new InputStreamReader(inputStream, "UTF-8");
于 2013-01-15T10:09:09.933 に答える
1

'This is a T�s�t' のような出力も得られるファイルがありました。私にとっては、charsetName を UTF-16 に設定するとうまくいきました。

于 2015-01-13T13:02:16.123 に答える
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();

InputStreamWriter正しいエンコーディングを使用してセットアップするだけで書きたい場合FileOutputStream...それは魅力のように機能します...

私が助けてくれることを願っています:-)

于 2013-01-15T10:19:42.733 に答える