为什么会有中文乱码?

简介: 为什么会有中文乱码?

何为乱码


在文件中所看到的字符串是系统把内存中的数据转换成二进制数再解码成一些字符最后显示,就是当你双击打开一个文本文件时系统会把内存的数码信息读取显示出来,当你保存一个文本文件时系统会把这个文件以你所设置的编码方式编码,再放进内存中。


编码方式是什么东西?


编码方式其实是一种计算机的存储规则,常见的字符集有UTF-8,GBK,GB2312。每种字符集都会在它所包含的字符和字节之间建立映射关系。而一个字节就是8个二进制位。所以你也可以把字符集看成是字符和二进制数进行转换的公式或映射表。


一个中文字符以utf-8编码会转成3个byte,如果以gbk编码会转成2个byte;

一个英文字符以utf-8编码会转成1个byte,如果以gbk编码会转成1个byte。


乱码产生原因


原因1.读取数据时未读完整个汉字


我们知道字节流读取数据时,一次只读取一个字节,英文字母只有一个字节存取,所以不会出现乱码,而idea默认的编码规则UTF-8(二进制)对中文的编码是3个字节,读取数据时未读完整个汉字自然会出现乱码。


原因2.编码和解码的方式不统一


如果创建本地文件,而其编码规则是GBK时,GBK的中文是占2个字节,而解码时使用编码规则是UTF-8,两个方式不统一,数据接受不完整会出现乱码


如何避免产生乱码?


1.不要用字节流读取文本文件,针对文本文件使用字符流。


2.编码解码时使用同一个编码方式


相关文章
|
5月前
|
Java Spring
中文乱码处理
中文乱码处理
39 0
|
应用服务中间件 nginx Docker
中文乱码问题
中文乱码问题
128 0
中文乱码
中文乱码
100 0
中文乱码
|
编解码 中间件 Java
javaWeb解决中文乱码的一点小总结
不同形式的请求及携带参数问题导致的乱码及解决
Notepad++ 出现中文乱码 轻松解决
Notepad++ 出现中文乱码 轻松解决
1941 0
Notepad++ 出现中文乱码 轻松解决
|
应用服务中间件
中文乱码的原因及解决方法
中文乱码的原因及解决方法
1732 0
中文乱码的原因及解决方法
|
JavaScript 前端开发