java解码与编码若干问题
2013-09-15 18:35
302 查看
下面大家请看我的代码,基本了解下,怎么得到字符串的unicode,utf-8编码,gbk编码,以及了解如何获取系统的默认字符集编码。
请看第9行代码就是怎么获取系统默认字符集,windows一般是gbk,linux一班是Utf-8.
对于初学者来说,最难理解的是,这么多编码,什么时候是用这个编码,什么时候是用那个编码,这也是我当时最头疼的事。
下面我们先了解下什么是编码什么是解码。
看我下一段代码:
就2行关键代码。
可能大家还是有些疑惑,那么我来提几个问题,看大家能否回答。
String str="你好";
"你好"是以什么方式存在于内存呢?
unicode,在java中你没把字符串进行编码,那么他就是以Unicode方式存在于内存的。
怎么存放?
String 其实是一个char字符数组."你好"相当于2个长度的char数组来存放。
char 字符怎么存放,unicode,所以归根到底 String对象在你没对他进行编码的时候,他就是以Unicode存放于内存的.
有人可能对这一行有疑问
byte[] buf=str.getBytes();
他认为,这里我没对字符串进行编码啊,我只是要得到他的字节码的数组啊,为什么你说对他进行了”gbk“编码。是这样的,当你操作系统是windows的时候,你这样写就等于
bytep[] buf=str.getBytes("gbk");
当你调用字符串getBytes的方法时,你是一定会以一种不是unicode的字符集对字符串进行编码的。
只是你还没对这一点有清楚的认识。
String str=new String(buf,"gbk");
这个过程叫做解码。
buf数组里面存放了“你好”的gbk编码,现在我要创建一个String对象,这里要指出,你的String对象其实是char数组。char是以Unicode嘛存放字符的,所以要解码,把用其他编码方式的字节码数组,解码成Unicode的字符串。当然你后面解码的字符集,必须要和你编码时的字符集对应,否则不是乱套了。
请看第9行代码就是怎么获取系统默认字符集,windows一般是gbk,linux一班是Utf-8.
对于初学者来说,最难理解的是,这么多编码,什么时候是用这个编码,什么时候是用那个编码,这也是我当时最头疼的事。
下面我们先了解下什么是编码什么是解码。
看我下一段代码:
就2行关键代码。
可能大家还是有些疑惑,那么我来提几个问题,看大家能否回答。
String str="你好";
"你好"是以什么方式存在于内存呢?
unicode,在java中你没把字符串进行编码,那么他就是以Unicode方式存在于内存的。
怎么存放?
String 其实是一个char字符数组."你好"相当于2个长度的char数组来存放。
char 字符怎么存放,unicode,所以归根到底 String对象在你没对他进行编码的时候,他就是以Unicode存放于内存的.
有人可能对这一行有疑问
byte[] buf=str.getBytes();
他认为,这里我没对字符串进行编码啊,我只是要得到他的字节码的数组啊,为什么你说对他进行了”gbk“编码。是这样的,当你操作系统是windows的时候,你这样写就等于
bytep[] buf=str.getBytes("gbk");
当你调用字符串getBytes的方法时,你是一定会以一种不是unicode的字符集对字符串进行编码的。
只是你还没对这一点有清楚的认识。
String str=new String(buf,"gbk");
这个过程叫做解码。
buf数组里面存放了“你好”的gbk编码,现在我要创建一个String对象,这里要指出,你的String对象其实是char数组。char是以Unicode嘛存放字符的,所以要解码,把用其他编码方式的字节码数组,解码成Unicode的字符串。当然你后面解码的字符集,必须要和你编码时的字符集对应,否则不是乱套了。
相关文章推荐
- java base64 编码 解码, HTTP传送解决+号 \n\r 问题,查询处理
- Java字符的编码解码与乱码问题 Java字符的编码解码与乱码问题
- java中含中文字符串的编码和解码问题。
- 【我的Java笔记】IO流_操作文本文件存在中文乱码的问题 & 编码和解码
- java中字符串的编码解码问题
- java中含中文字符串的编码和解码问题。
- java中的URLEncoder和URLDecoder类处理编码与解码问题
- java.net.URLEncode编码 与 URLDecode解码问题
- java.net.URLEncode编码 与 URLDecode解码问题
- java.net.URLEncode编码 与 URLDecode解码问题 %E5%9B%9B%E5%B7%9D
- java,js的编码解码问题
- java.net.URLEncode编码 与 URLDecode解码问题
- java.net.URLEncode编码 与 URLDecode解码问题
- java中含中文字符串的编码和解码问题
- Java 之NIO(四) - 编码解码问题
- Base64 JAVA后台编码与JS前台解码(解决中文乱码问题)
- java.net.URLEncode编码 与 URLDecode解码问题
- Java字符的编码解码与乱码问题
- java.net.URLEncode编码 与 URLDecode解码问题
- Base64 JAVA后台编码与JS前台解码(解决中文乱码问题)