为什么会有中文乱码?

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

何为乱码


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


编码方式是什么东西?


编码方式其实是一种计算机的存储规则,常见的字符集有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.编码解码时使用同一个编码方式


相关文章
|
Java Apache Maven
父(Super)POM
Maven的父(Parent)POM是所有POM的默认基础,包含可继承的默认设置。它定义了如http://repo1.maven.org/maven2的默认仓库。开发者可通过`mvn help:effective-pom`查看默认配置。在MVN/project目录下,创建包含模型版本、groupId、artifactId和版本号的pom.xml,然后运行上述命令,Maven将显示处理后的effective-pom,展示实际使用的配置。
ffmpeg获取视频大小再压缩视频脚本
ffmpeg获取视频大小再压缩视频脚本
227 0
|
13天前
|
数据采集 人工智能 安全
|
8天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
639 4

热门文章

最新文章