import sun.io.*;
class byte2char
{
public static void main(String[] args) throws Exception
{
//如果你不指定converter,则系统会自动使用当前的encoding,gb平台上用gbk,en平台上用8859_1。
//
byte b[] = {(byte)'\u00c4',(byte)'\u00e3'};
System.out.println("byte b[] =");
System.out.println(java.util.Arrays.toString(b));
//byte ——〉char:
//"你"的gb码是:0xc4e3 ,unicode是0x4f60
String encoding = "gb2312";
System.out.println("encoding = "+encoding);
ByteToCharConverter converter = ByteToCharConverter.getConverter(encoding);
char c[] = converter.convertAll(b);
for (int i = 0; i < c.length; i++) {
System.out.println(Integer.toHexString(c[i]));
}
System.out.println("c.length= "+c.length);
for (int i = 0; i < c.length; i++) {
System.out.print(c[i]);
}
System.out.println();
//结果是什么?0x4f60
//如果encoding ="8859_1",结果又是什么?0x00c4,0x00e3
{
String encoding = "8859_1";
System.out.println("encoding = "+encoding);
ByteToCharConverter converter = ByteToCharConverter.getConverter(encoding);
char c[] = converter.convertAll(b);
for (int i = 0; i < c.length; i++) {
System.out.println(Integer.toHexString(c[i]));
}
System.out.println("c.length= "+c.length);
for (int i = 0; i < c.length; i++) {
System.out.print(c[i]);
}
System.out.println();
}
}
}
/*
encoding = "gb2312"
byte b[] =
[-60, -29]
4f60
c.length= 1
你
Hello World!
请按任意键继续. . .
*/
byte2char.java:20: 警告: ByteToCharConverter是内部专用 API, 可能会在未来发行版中
删除
ByteToCharConverter converter = ByteToCharConverter.getConverter
(encoding);
^
byte2char.java:20: 警告: ByteToCharConverter是内部专用 API, 可能会在未来发行版中
删除
ByteToCharConverter converter = ByteToCharConverter.getConverter
(encoding);
^
byte2char.java:37: 错误: 已在方法 main(String[])中定义了变量 encoding
String encoding = "8859_1";
^
byte2char.java:39: 错误: 已在方法 main(String[])中定义了变量 converter
ByteToCharConverter converter = ByteToCharConverter.getC
onverter(encoding);
^
byte2char.java:39: 警告: ByteToCharConverter是内部专用 API, 可能会在未来发行版中
删除
ByteToCharConverter converter = ByteToCharConverter.getC
onverter(encoding);
^
byte2char.java:39: 警告: ByteToCharConverter是内部专用 API, 可能会在未来发行版中
删除
ByteToCharConverter converter = ByteToCharConverter.getC
onverter(encoding);
^
byte2char.java:40: 错误: 已在方法 main(String[])中定义了变量 c
char c[] = converter.convertAll(b);
^
注: byte2char.java使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。
3 个错误
4 个警告
请按任意键继续. . .
import sun.io.*;
class byte2char
{
public static void main(String[] args) throws Exception
{
//如果你不指定converter,则系统会自动使用当前的encoding,gb平台上用gbk,en平台上用8859_1。
//
byte b[] = {(byte)'\u00c4',(byte)'\u00e3'};
System.out.println("byte b[] =");
System.out.println(java.util.Arrays.toString(b));
//byte ——〉char:
//"你"的gb码是:0xc4e3 ,unicode是0x4f60
String encoding = "gb2312";
System.out.println("encoding = "+encoding);
ByteToCharConverter converter = ByteToCharConverter.getConverter(encoding);
char c[] = converter.convertAll(b);
for (int i = 0; i < c.length; i++) {
System.out.println(Integer.toHexString(c[i]));
}
System.out.println("c.length= "+c.length);
for (int i = 0; i < c.length; i++) {
System.out.print(c[i]);
}
System.out.println();
//结果是什么?0x4f60
//如果encoding ="8859_1",结果又是什么?0x00c4,0x00e3
{
encoding = "8859_1";
System.out.println("encoding = "+encoding);
converter = ByteToCharConverter.getConverter(encoding);
c = converter.convertAll(b);
for (int i = 0; i < c.length; i++) {
System.out.println(Integer.toHexString(c[i]));
}
System.out.println("c.length= "+c.length);
for (int i = 0; i < c.length; i++) {
System.out.print(c[i]);
}
System.out.println();
}
}
}
/*
byte b[] =
[-60, -29]
encoding = gb2312
4f60
c.length= 1
你
encoding = 8859_1
c4
e3
c.length= 2
??
请按任意键继续. . .
*/