-1

Cp1252エンコーディングでエンコードおよび保存された文字列を取り、Javaテキスト領域に表示しようとしています。読み返すと、通常は特殊文字 ('、& など) である疑問符の付いた黒いひし形があります。適切な文字を表示するようにフォーマットするにはどうすればよいですか。

単語の外に移動するとほぼ正しく表示されるため、テキストをコピーして貼り付けることができません。しかし、Cp1252 ファイルを読み取るために使用しているコードは以下のとおりです。

try {
        br = new BufferedReader(new FileReader(f));
        //Read File Line By Line
        while ((strLine = br.readLine()) != null)   {
            emi.stringContent += "\n" + strLine;
        }

    br.close();
    } catch (FileNotFoundException ex) {
        Logger.getLogger(EMailTmpDirRead.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(EMailTmpDirRead.class.getName()).log(Level.SEVERE, null, ex);
    }

ありがとう!

次の編集を行いましたが、何も読み込まれません。

StringBuffer temp2 = new StringBuffer(1000);
    int numRead = 0;
    char[] buf = new char[1024];

    try {
        ir = new InputStreamReader(new FileInputStream(f), "Cp1252");
        while((numRead = ir.read()) != -1)
        {
            String temp = String.valueOf(buf, 0, numRead);
            temp2.append(temp);
            buf = new char[1024];
        }
        emi.stringContent = temp2.toString();

行がスキップされているように見える StringBuffer temp2 = new StringBuffer();

    try {
        ir = new InputStreamReader(new FileInputStream(f), "Cp1252");
        br = new BufferedReader(ir);
        while(br.readLine() != null)
        {
            temp2.append(br.readLine());
        }
        emi.stringContent = temp2.toString();
4

1 に答える 1

0

を使用するのではなく、 ;でラップされたをFileReader使用します。InputStreamReader のコンストラクターで文字エンコーディングを指定します (このページによると、エンコーディングには「Cp1252」を使用する必要があるようです)。FileInputStreamInputStreamReader

于 2013-05-10T03:23:45.557 に答える