OutputStream write(int b)方法:特殊字符编码

时间:2018-04-23 13:58:34

标签: encoding char jtextarea outputstream

我无法使用ěščřžýáíé类中的方法write(int b)编写特殊字符OutputStream来解决我的问题。我使用此类将控制台输出重定向到JTextArea

class CustomOutputStream extends OutputStream {
    private JTextArea textArea;

    CustomOutputStream(JTextArea textArea) {
        this.textArea = textArea;
    }

    @Override
    public void write(int b) {
        textArea.append(String.valueOf((char) b));
        // scrolls the text area to the end of data
        textArea.setCaretPosition(textArea.getDocument().getLength());
    }
}

它适用于标准字符。对于字符ěščřžýáíé,它会打印不可读的字符。

enter image description here

我不知道如何设置字符编码或如何通过其他方式解决此问题。

谢谢你,J。

1 个答案:

答案 0 :(得分:0)

您将b int转换为char类型,因此您丢失了大部分信息。并且您没有将b解释为unicode代码点。

textArea.append(Character.toChars​(b))

如果原始文本不是Unicode,则可以对其进行解码。