Java int转换为带有特殊字符的char



之前,我有一个这样的代码:

        Writer writer = new OutputStreamWriter(System.out, "UTF-8");
        generator.stream(writer);
现在,我的代码看起来像这样:

            string = new StringBuilder();
            OutputStream output = new OutputStream()
            {
                public String getString()
                {
                    return string.toString();
                }
                @Override
                public void write(int b) throws IOException {
                if ((char)b != 'n')
                {
                    string.append((char) b );
                }
            }
            public String toString(){
                return string.toString();
            }
        };
        Writer writer = new OutputStreamWriter(output, "UTF-8");
        generator.stream(writer);
        writer.close();
        PrintStream ps = new PrintStream(System.out, true, "UTF-8");
        ps.println(string.toString());

第一个代码的问题是它不能保证输出在单行中。另一方面,我的新代码解决了这个问题,然而,出现了一个新问题:输出的不是'Á'而是' ',这是相当痛苦的,因为应该支持匈牙利语和波兰语字符。对于非匈牙利语、非波兰语字符,我当前的输出是正确的,但是我的新代码不处理书面匈牙利语和波兰语中的特殊字符。我该如何克服这个问题?

谢谢。

扩展OutputStreamWriter类,并覆盖适当的方法来删除换行符。

public class NoNewLineOutputStreamWriter extends OutputStreamWriter {
    public NoNewLineOutputStreamWriter(OutputStream out,String charset) throws UnsupportedEncodingException {
        super(out,charset);
    }
    public void write(String str) throws IOException {
        super.write(str.replaceAll("n", ""));
    };
    public void write(int c) {
        if (c == 'n')
            return;
        else
            super.write(c);
    }
}

然后像以前一样打电话给你的作者

    Writer writer = new NoNewLineOutputStreamWriter(System.out, "UTF-8");
    generator.stream(writer);

这一定是因为操作系统的默认字符集。
我有类似的问题关于转换为é。
我更改了JVM文件。编码为UTF作为-Dfile.encoding=UTF-8
于是我的问题就解决了。

同样阅读:

  • setting-the-default-java-character-encoding

  • defining-accent-characters-in-different-platforms-under-java

相关内容

  • 没有找到相关文章

最新更新