带有特殊字符的Java int到char
以前,我有这样一个代码:带有特殊字符的Java int到char,java,encoding,stream,streaming,inputstream,Java,Encoding,Stream,Streaming,Inputstream,以前,我有这样一个代码: Writer writer = new OutputStreamWriter(System.out, "UTF-8"); generator.stream(writer); 现在,我的代码如下所示: string = new StringBuilder(); OutputStream output = new OutputStream() {
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());
第一个代码的问题在于它不能保证输出在一行中。另一方面,我的新代码解决了这个问题,但是出现了一个新问题:输出发送的不是“Á”ᅢチ', 这是相当痛苦的,因为匈牙利和波兰字符应该得到支持。对于非匈牙利语、非波兰语字符,我当前的输出是正确的,但我的新代码不处理书面匈牙利语和波兰语中的特殊字符。我如何克服这个问题
谢谢。这一定是因为操作系统的默认字符集
我也有类似的问题,关于转换成的问题。
我将JVM file.encoding更改为UTF作为
-Dfile.encoding=UTF-8
然后我的问题就解决了。
也请阅读以下内容:
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);
什么是
generator.stream()
?generator是一个SVGGraphics2D对象,stream()是它的stream方法,这里有更多详细信息:谢谢,但我的系统编码是UTF-8。我认为我错误地处理了名为output的变量,因为名为string的对象已经存在匈牙利和波兰字符的此缺陷。