字符编码这个事儿

Posted lovelywxd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符编码这个事儿相关的知识,希望对你有一定的参考价值。

计算机中的编码和解码

  计算中信息的表示是通过二进制01字节流。编码方式即为不同的二进制通过转换所表示出来的特定信息(不同的编码方式均有特定的规则)

  符号集:ASCII只可表示128个符号。其他的文字符号ASCII无法表示。Unicode为其中一种字符集,该字符集包含了世界上所有的符号。

  Unicode规定了符号的二进制格式,但是没有固定编码格式(二进制格式如何存储)。于是UTF-8,UTF-32等等编码方式都是具体Unciode符号的存储方式。

  乱码的根因形成:编码和解码方式的不同,且编码和解码使用的字符集不同。

Java中的字符编码

  内码:程序内部使用的字符编码。Java字符的内码均为UTF-16(Unicode)编码。java文件编译形成class文件(编码)----JVM加载class文件(解码)。

  外码:程序与外部(文件、数据库、网络等)交互使用的字符编码。

  内码与外码的转换。外码---(解码)---Unicode码(内部使用统一的Unicode码,避免乱码); String.getBytes()(内码---(先解内码,再使用默认或者指定方式编码)--外码); new String(bytes[] array, charset) 解外码方式。

以HttpRequest的编码和解码为例(HttpParser类)

  头参数(URL编码:URL不允许使用特定出了英文符号之外的字符,故需要进行编码%。不同的浏览器或客户端可能采用不同的编码方式。)  含有其他字符可以指定编码方式。一般默认解码都是ISO-8859-1 

  请求体(Content-Type指定了编码格式)

 

以上是关于字符编码这个事儿的主要内容,如果未能解决你的问题,请参考以下文章

java如何把以unicode编码形式的字符串变成编码前的形式

字符编码Java字符编码详细解答及问题探讨

(IOS)字符串encode编码(编码url字符串不成功的问题)

在ASCII码字符编码中,啥字符无法显示或打印出来

python基础----字符编码以及文件处理

python-字符编码与文件处理