关于编码的简单介绍
import java.io.IOException;
import java.io.UnsupportedEncodingException;
public class CharCode {
public static void main(String[] args) {
// TODO Auto-generated method stub
String strChina = "中国";
/**
* 打印出unico码
* Unicode当然是一个很大的集合,现在的规模可以容纳100多万个符号。
* 每个符号的编码都不一样,比如,U+0639表示阿拉伯字母Ain,U+0041表示英语的大写字母A,
* “汉”这个字的Unicode编码是U+6C49。
*/
for (int i = 0; i < strChina.length(); i++) {
System.out.print(strChina.charAt(i)+"(的unico编码的十六进制表现形式为):");
System.out.println(Integer.toHexString((int) strChina.charAt(i)));
}
/**
* 打印出每个字的国标码
* 于是中国的标准化组织就出台了GB2312简体中文编码。
* GB2312编码用两个字节(8位2进制)表示一个汉字,
* 所以理论上最多可以表示256×256=65536个汉字。
*/
try {
byte[] buf = strChina.getBytes("gb2312");
for (int i = 0; i < buf.length; i++) {
System.out.println("国标gb2312码的十六进制为:"+Integer.toHexString(buf[i]));
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
/**
* utf-8
* 为了提高Unicode的编码效率,于是就出现了UTF-8编码。
* UTF-8可以根据不同的符号自动选择编码的长短。
* 比如英文字母可以只用1个字节就够了。
* UTF-8的编码是这样得出来的,以”汉”这个字为例:
* “汉”字的Unicode编码是U+00006C49,然后把U+00006C49通过UTF-8编码器进行编码,
* 最后输出的UTF-8编码是E6B189。
*/
try {
byte[] buf = strChina.getBytes("utf-8");
for (int i = 0; i < buf.length; i++) {
System.out.println("utf-8码的十六进制为:"+Integer.toHexString(buf[i]));
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
/**
* ASCII
* 美国(国家)信息交换标准(代)码,一种使用7个或8个二进制位进行编码的方案,最多可以给256个字符
* (包括字母、数字、标点符号、控制字符及其他符号)分配(或指定)数值。
* 字母和数字的 ASCII 码的记忆是非常简单的。
* 我们只要记住了一个字母或数字的 ASCII 码(例如记住 A 为 65 , 0 的 ASCII 码为 48 ),
* 知道相应的大小写字母之间差 32 ,就可以推算出其余字母、数字的 ASCII 码。
*
*/
try {
byte[] buf = strChina.getBytes("ASCII");
for (int i = 0; i < buf.length; i++) {
System.out.println("ASCII码的十六进制为:"+Integer.toHexString(buf[i]));
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//System.setProperty(key, value)//设置环境配置的键值
System.getProperties().list(System.out);//运行环境参数
System.out.println("请输入一个中文字符窜按enter结束输入并且得到unico编码");
byte[] b = new byte[1024];
String strInfo = null;
int post = 0;
int ch = 0;
while(true){
try {
ch = System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
//System.out.println(Integer.toHexString(ch));
switch(ch){
case '/r':
break;
case '/n':
try {
strInfo = new String(b,0,post,"gb2312");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
for(int i = 0; i<strInfo.length();i++){
System.out.println(Integer.toHexString(strInfo.charAt(i)));
}
break;
default:
b[post++] = (byte)ch;
}
}
}
}