に埋め込んだロガーに問題があります。メソッドJTextArea
を呼び出すと問題なく動作しますが、 を使用すると、フランス語のアクセントがすべて失われます。logger.append()
System.out.println()
ここでは、ロガーの作成と、ロガーへのリダイレクトがSystem.out
ありSystem.err
ます。
this.logger = new TextAreaOutputStream(jta, jsp.getVerticalScrollBar());
System.setProperty("user.langage", "fr");
PrintStream ps;
ps = new PrintStream(this.logger, true, "UTF-8");
System.setOut(ps);
System.setErr(ps);
ここにTextAreaOutputStream
クラスがあります。
import java.io.IOException;
import java.io.OutputStream;
import javax.swing.JScrollBar;
import javax.swing.JTextArea;
public class TextAreaOutputStream extends OutputStream {
private JTextArea jta;
private JScrollBar jsb;
public TextAreaOutputStream(JTextArea jta, JScrollBar jsb) {
this.jta = jta;
this.jsb = jsb;
}
public synchronized void append(String s) {
this.jta.append(s);
scroll();
}
public synchronized void write(int b) throws IOException {
jta.append(String.valueOf((char) b));
if (((char) b) == '\n')
scroll();
}
private synchronized void scroll() {
if ((jsb.getValue() + jsb.getVisibleAmount()) == jsb.getMaximum())
jta.setCaretPosition(jta.getDocument().getLength());
}
}
のエンコーディングをランダムエンコーディングに変更しようとしましたPrintStream
が、間違って印刷されたアクセントの外観が変わりましたが、正しくすることはできませんでした. \u00e9
また、 forなどの Unicode エントリでアクセントを変更しようとしましたé
が、何も変わりませんでした。
ここで、私はあなたの助けを求めるのに十分必死です.
ロマン