乱码的原因
来源:互联网 发布:斗鱼tv直播软件 编辑:程序博客网 时间:2024/05/04 03:40
乱码出现的原因:
乱码出现实际是使用错误的解码方式,像UTF-8中的中国,总占六个字节,(UTF8中一个汉字占三个字节)
却用GBK的解码方式去解,GBK的中国只占四个字节,(GBK中一个汉字占两个字节)
解码的动作变这样,错误可想而知
下面的一个1代表一个字节
111 111 --》 11 11 11
字节状态的汉字和内存中的汉字应该是不同的
内存中的汉字已经是汉字了(或者说是char类型),它可以以任何编码输出
字节状态中的汉字只能以固定的编码解析
为什么以GBK为编码的中国在控制台会乱码呢,因为控制台设置的是utf-8,以utf-8解GBK
11 11 -> 111 1??
同样代码中的一些中文注释也是这个道理,GBK被以UTF-8解码,自然乱了
标准字符和非标准字符(就是ascii和非ascii)
为什么abc等一些字符不会乱码呢,无论是utf-8转gbk,还是转iso8859-1都不会呢?
原来。。。
以utf-8来说,它们的最左边那位,好像是叫符号位的东东,都是0,而汉字却是1,以此区分
所有编码方式应该都是按这个标准执行的,所以abc之流,不会乱码,
不论是utf-8,gbk中的abc都只占一字节。
下面以二进制展示例子:
(非标准字符(以GBK为例))汉字 -> 1xxxxxxx 1xxxxxxx
(标准字符)abc之流 -> 0xxxxxxx
当然这个标和非标只是我理解出来的一个概念
0 0
- 乱码的原因???????????????????
- 乱码的原因?222222222222222??????????????????
- 页面乱码的原因
- mysql乱码的原因
- 出现乱码的原因
- JSP乱码的原因
- 乱码的原因
- ajax 出现乱码的原因
- MySql脚本乱码的原因
- qt中文乱码的原因
- Web项目乱码的原因
- MySQL出现乱码的原因
- 中文乱码的产生原因
- 数据库出现乱码的原因和解决办法
- 中文字符乱码的原因及解决办法
- java中文乱码出错的另外原因
- 邮件乱码产生的原因及其分析
- mysql 中文乱码的一种可能原因
- CCNET持续集成总结
- C# 指定模板 并导出Excel
- C# 判断时间格式是否正确,多种判断
- 团队中“技术大拿”并非越多越好
- 大话 IQueryable和IEnumberable and IList与Lis t区别
- 乱码的原因
- equals与=== 的总结
- android MVVM开发模式(三)
- yii2的事务处理
- 调度 Quartz 时间格式配置
- Ubuntu安装mysql
- 日常报错+解决方案
- VS2013 用正则表达式统计代码行数
- 语法优化-多条件判断