1) Unicode和gb2312的程序实战
package IO;
public class CharCode {
public static void main(String[] args) throws Exception{
System.setProperty("file.encoding", "iso8859-1");//更改java虚拟机的环境变量
System.getProperties().list(System.out);//把java虚拟机的环境变量都输出出来
String strChina="中国";//定义一个字符串
for (int i = 0; i < strChina.length(); i++) {
System.out.println(Integer.toHexString((int)strChina.charAt(i)));//输出上边字符串每个字符的Unicode的16进制形式
}
byte [] buf=strChina.getBytes();//把字符串转换为gb2312形式
for (int i = 0; i < buf.length; i++) {
System.out.println(Integer.toHexString(buf[i]));//打印中国的gb2312的16进制形式
}
//System.out.write(buf,0,4); //输出字符数组的一组值,会刷新缓冲区
for (int i = 0; i < buf.length; i++) {
System.out.write(buf[i]); //输出字符数组的单个值,不会刷新缓冲区
}
System.out.println(); //调用该方法会刷新缓冲区
//System.out.println("中国"); //用该方法输出数据时,会自动调用系统的给出的编码形式
}
}
2) 字符编码
package IO;
public class CharDecode {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
System.getProperties().put("file.encoding", "iso8859-1");//设置虚拟机环境变量
//System.getProperties().list(System.out);
System.out.println("please enter a chinese String:");
byte [] buf=new byte[1024];
String infoStr=null;
int pos=0;
while (true) {
int ch=System.in.read();//从键盘输入字符
System.out.println(Integer.toHexString(ch));//查看该字符的16进制形式
switch (ch) {
case '/r':
break;
case '/n'://当输入回车时 程序结束,把输入的字符转化为字符串,再输出字符串的16进制形式
infoStr=new String(buf,0,pos,"gb2312");
for (int i = 0; i < infoStr.length(); i++) {
System.out.println(Integer.toHexString(infoStr.charAt(i)));
}
System.out.println(infoStr);
break;
default:
buf[pos++]=(byte)ch;//把输入的字符依次存储到字符数组里
}
}
}
}
出现问题:在myEclipse中的设置的虚拟机环境变量无效