java中的编码与解码

编码表概述和常见的编码表

概述:有字符及其对应的数值组成的一张表

常见的编码表

ASCII:美国标准信息交换表
ISO8859-1:拉丁码表,欧洲码表
GB2312:中国的中文编码表
GBK:中国的中文编码表升级
GB18030:GBK的取代版本
BIG5:通用于香港、台湾地区的繁体字编码方案
UTF-8:最多用3个子节表示一个字符
Unicode:国际标准码,融合了多种文字,所有的文字都用两个子节来表示,Java语言使用的就是该码表

    编码过程:把看得懂的变成看不懂的
    解码过程:把看不懂的变成看得懂的

在我们Java中定义了一个String,其编码方式是啥?

    字符串实际上就是一个char数组。那么Char的编码,其实就是字符串的编码。那么Char是什么编码呢?Java中的String默认使用的是Unicode编码。
    Unicode是一中编码,所谓的编码就是一个编号到字符的一种映射关系,就仅仅是一对一的映射关系而已。

编码和编码格式的区别是什么?

    1.Unicode 是一种编码,所谓的编码就是一个编号(数字)到字符的一种映射关系,就仅仅是一种一对一的映射关系而已。
    2. GBK、UTF-8是一种编码格式,是用来序列化或存储上述的(编号或者数字)的一种“格式”.

    编码和编码格式:*java的String使用的编码的Unicode,当String存在于内存中的时候,是“只有编码没有编码格式的”,所以java程序中的任何String对象,说它是GBK或者UTF-8都是错的。String在内存中是不存在编码格式*的,它只是一个Unicode的一个字符而已。
    当字符串需要在网络中传输或者要被写入文件的是时候,就需要编码格式了。乱码的问题也因此出现了。

    GBK 和 UTF-8:GBK 和 UTF-8 都是用来序列化或存储 Unicode 编码的数据的,但是分别是2中不同的格式,他们都是 Unicode 的实现方式。

    ASCII码 和 Unicode:ASCII 和 Unicode一样也是一种编码,只不过这两种编码能编码的范围不同,Unicode 能编码的范围要更大一些,几乎能覆盖现存的所有字符。

Java中一些编解码的常见使用

    1.流读取文件,具有转换编码功能的有:OutputStreamWriterInputStreamReader
构造器如下:

// 创建指定字符集的 InputStreamReader
InputStreamReader(InputStream in, String CharsetName)
// 创建使用指定字符集的 OutputStreamWriter
OutputStreamWriter(OutputStream out, String CharsetName)

    2.处理字符串编码问题

//a. 重新对获取的字符串进行编码
Byte[] bytes = str.getBytes(String encodeCharName);

//b. 重新对bytes进行编码,创建新的字符串对象
str = new String(Byte[] bytes, String decodeCharsetName);

// 一般结合使用
str = new String(str.getBytes(String encodeName), String decodeCharsetName);

    3.处理请求参数传递编码问题
        java中编码:URLEncoder.encode(strUri, “UTF-8”);
        java中解码:URLDecoder.decode(strUri, “UTF-8”);

  • 13
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值