您的位置:首页 > 编程语言 > Java开发

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种涉及的编解码



总之,在需要编解码的地方,使用同样的方式编解码,即编解码的类型一致就不会出现乱码情况。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: