Java编码问题
2015-11-02 08:41
330 查看
此文说的编码不是编程的意思,而是语言编码,比方说中文存储或传输时就需要编码,不然会出现乱码的情况,那么:
一、为什么要编码?
1)计算机中存储信息的最小单位是一个字节(byte),即8个bit,所以能表示的字符范围是0~255个
2)人类要表示的符号太多,无法用一个字节来完全表示
要解决这个矛盾必须要有一个新的数据结构char,从char到byte必须编码。
二、什么时候需要编码
1)I/O操作:上面提到,涉及编码的地方一般都在字符到字节或者字节到字符的转换上,需要这种转换的场景主要是I/O,包括磁盘I/O和网络I/O。
2)内存中的编码:最常用的场景是字符到字节的转换,java中用String表示字符串,因此String类提供了转换到字节的方法,也支持字节转换到字符串的构造函数,
String s = "这是中文字符串";
byte[ ] b = s.getBytes("UTF-8");
String n = new String(b,"UTF-8");
当然也不止上面个两种,还是那句话,凡是涉及到字节到字符,字符到字节转换的都会牵扯到编码,此中需要特别注意,否则会出现乱码情况。
三、如何编码
明白了为什么编码以及何时编码,那么如何编码?常见的编码方式有以下几种:
ASCII,ISO-8895-1,GB2312,GBK,UTF-8,UTF-16等,在此不做详细说明,常用中文编码为GBK和UTF-8。
四、java web种涉及的编解码
![](http://img.blog.csdn.net/20151102092139808?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
总之,在需要编解码的地方,使用同样的方式编解码,即编解码的类型一致就不会出现乱码情况。
一、为什么要编码?
1)计算机中存储信息的最小单位是一个字节(byte),即8个bit,所以能表示的字符范围是0~255个
2)人类要表示的符号太多,无法用一个字节来完全表示
要解决这个矛盾必须要有一个新的数据结构char,从char到byte必须编码。
二、什么时候需要编码
1)I/O操作:上面提到,涉及编码的地方一般都在字符到字节或者字节到字符的转换上,需要这种转换的场景主要是I/O,包括磁盘I/O和网络I/O。
2)内存中的编码:最常用的场景是字符到字节的转换,java中用String表示字符串,因此String类提供了转换到字节的方法,也支持字节转换到字符串的构造函数,
String s = "这是中文字符串";
byte[ ] b = s.getBytes("UTF-8");
String n = new String(b,"UTF-8");
当然也不止上面个两种,还是那句话,凡是涉及到字节到字符,字符到字节转换的都会牵扯到编码,此中需要特别注意,否则会出现乱码情况。
三、如何编码
明白了为什么编码以及何时编码,那么如何编码?常见的编码方式有以下几种:
ASCII,ISO-8895-1,GB2312,GBK,UTF-8,UTF-16等,在此不做详细说明,常用中文编码为GBK和UTF-8。
四、java web种涉及的编解码
总之,在需要编解码的地方,使用同样的方式编解码,即编解码的类型一致就不会出现乱码情况。
相关文章推荐
- Java关键字final
- 从校园到工作的路(五)————java中的类型转换
- Java的内部类
- Spring rest 启动报错的一种可能性
- 去除 MyEclipse updating index
- Java面向对象编程-第3章学习笔记
- Java面向对象编程-第2章学习笔记
- [javascirpt] Regex
- springMVC笔记(二)
- Java面向对象编程-第1章学习笔记
- java 实例变量初始化
- java中Proxy类初探
- 菜鸟猿大战Java之异常处理初接触
- Java的泛型是类型擦除的
- SpringDI_constructor注入
- spring 与设计模式(行为型)之Adapter模式
- Spring Web Flow 官网下载地址
- Spring MVC AOP 初步学习
- struts2中redirectAction方式 重定向带参数/中文参数乱码
- java 获取路径的各种方法