java中字符串的编码解码问题

本文详细介绍了Java中字符串的编码与解码问题,包括getBytes()和new String()方法的使用,以及如何处理编码不匹配导致的乱码。重点讨论了ISO8859-1、GBK、Unicode和UTF编码之间的转换,强调了在处理中文字符时的注意事项。还提到了JAVA对字符的处理,页面编码,表单传递参数编码,数据库编码,以及JAVA编码转换的详细过程。
摘要由CSDN通过智能技术生成

1.将字符串转换成byte数组再恢复:

byte[] getBytes(String charsetName)

String(byte[] bytes, String charsetName)

或getBytes()

String(byte[] bytes)

2.使用String sun.misc.BASE64Encode.encode(byte[] b)

byte[] String sun.misc.BASE64Decode.decodeBuffer(String str)

将字符串转换成byte[],再转换成ASCII码;恢复时做逆操作。

在字符串转换成byte[]时,尽量用byte[] getBytes(String charsetName)方法,解码时也用相同的charsetName做参数,如果都不charsetName可能会导致一些中文字符不能正确解码。

3.使用java.net.URLEncoder类和java.net.URLDecoder类

它有static方法将字符串转换成‘pplication/x-www-form-urlencoded'格式便于在网络中传播

形如‘%20%35'。

转自

 

 

 

 

  字符:人们使用的记号,抽象意义上的一个符号。比如:‘1’,‘中’,‘a’ 字节:计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空间字符集:使用哪些字符。也就是说哪些汉字,字母和符号会被收入标准中。所包含“字符”的集合就叫做“字符集”。编码:规定每个“字符”分别用一个字节还是多个字节存储,用哪些字节来存储,这个规定就叫做“编码” 平常我们所说的“字符集”,比如:GB2312, GBK, JIS 等,除了有“字符的集合”这层含义外,同时也包含了“编码”的含义。

 一、编码基本知识

 

1.iso8859-1 属于单字节编码,最多能表示的字符范围是 0-255,应用于英文系列。比如,字母 'a' 的编码为0x61=97。 很明显,iso8859-1 编码表示的字符范围很窄,无法表示中文字符。但是,由于是单字节编码,和计算机最基础的表示单位一致,所以很多时候,仍旧使用 iso8859-1 编码来表示。而且在很多协议上,默认使用该编码。比如,虽然"中文"两个字不存在 iso8859-1 编码,以 gb2312 编码为例,应该是"d6d0 cec4" 两个字符,使用 iso8859-1 编码的时候则将它拆开为 4 个字节来表示:"d6 d0 ce c4"(事实上,在进行存储的时候,也是以字节为单位处理的)。而如果是 UTF 编码,则是 6 个字节 "e4 b8 ad e6 96 87"。很明显,这种表示方法还需要以另一种编码为基础。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值