Tag: 编码

Java 8 UTF-8编码问题(java bug?)

使用UTF-8编码创建String时存在不一致。 运行此代码: public static void encodingIssue() throws IOException { byte[] array = new byte[3]; array[0] = (byte) -19; array[1] = (byte) -69; array[2] = (byte) -100; String str = new String(array, “UTF-8”); for (char c : str.toCharArray()) { System.out.println((int) c); } } 在Java 1.8.0_20(及更早版本)上,我们得到了结果 65533 在Java 1.7和1.6上,我们得到了正确的结果: 57052 你遇到过这个错误吗? 这有解决方法吗? 这种不一致也体现在Shift_JIS,JIS_X0212-1990,x-IBM300,x-IBM834,x-IBM942,x-IBM942C,x-JIS0208上,但显然UTF-8更为紧迫。

Windows控制台中的西里尔文(java)System.out.println();

当我写一些西里尔文本,System.out.println(“Русскийязык”) – 然后它推出这个╨єёёъшщч√ъ,使用Windows控制台,怎么可以这个修复?,文件编码是utf-8,但它没关系,当它是ansii或windows-1251时,输出相同。

Java如何在其16位字符类型中存储UTF-16字符?

根据Java SE 7规范 ,Java使用Unicode UTF-16标准来表示字符。 将String想象成一个包含一个字符的16位变量的简单数组时,生活很简单。 不幸的是,有16位的代码点是不够的(我相信它是所有Unicode字符的16/17)。 所以在String ,这没有直接问题,因为当想要使用额外的两个字节存储这些~1.048.576字符中的一个时,只需使用该String两个数组位置。 这没有任何直接问题,适用于String ,因为总有两个字节。 虽然单变量与UTF-16编码相比,具有16位的固定长度 ,但如何存储这些字符,特别是Java如何使用2字节“char”来完成类型 ?

Java:如何检测(和更改?)System.console的编码?

我有一个程序在控制台上运行,它的变音符号和其他特殊字符在Mac上输出。 这是一个简单的测试程序: public static void main( String[] args ) { System.out.println(“höhößüä”); System.console().printf( “höhößüä” ); } 在默认的Mac控制台(使用默认的UTF-8编码)上,打印: h?h???? h?h???? 但手动将Mac终端的编码设置为“Mac OS Roman”后,它正确打印 höhößüä höhößüä 请注意,在使用System.console()的Windows系统上工作: h÷h÷▀³õ höhößüä 所以我如何制作我的节目…… rolleyes ……“到处跑”?

Java中的字节和字符转换

如果我将一个字符转换为byte然后再转换为字符,则该字符会神秘地消失并成为其他内容。 这怎么可能? 这是代码: char a = ‘È’; // line 1 byte b = (byte)a; // line 2 char c = (char)b; // line 3 System.out.println((char)c + ” ” + (int)c); 直到第2行一切都很好: 在第1行,我可以在控制台中打印“a”,它会显示“È”。 在第2行,我可以在控制台中打印“b”,它会显示-56,即200,因为字节已签名。 200是“È”。 所以它仍然很好。 但第3行有什么不对? “c”成为别的东西,程序打印? 65480 ? 65480 这是完全不同的东西。 我应该在第3行写什么才能得到正确的结果?

带有utf-8的Java BufferedWriter对象

我有以下代码,我想使输出流使用utf-8。 基本上我有像é这样的字符,显示为é 所以它看起来像编码问题。 我见过很多使用的例子…… OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(path),”UTF-8″); 我目前的代码是…… BufferedWriter out = new BufferedWriter(new FileWriter(DatabaseProps.fileLocation + “Output.xml”)); 是否可以将此对象定义为UTF-8而无需使用OutputStreamWriter? 谢谢,