应该懂的字符集及其相关的基础知识



一、字符集和字符编码是什么?

  字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。
  
  字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同
  
  字符编码(Character Encoding)是指一种映射规则,此映射规则可将某个字符映射成其他形式的数据以便在计算机中存储和传输

计算机要准确的处理各种字符集文字,就需要进行字符编码,以便计算机能够识别和存储各种文字。

二、字符集是解决什么问题?

没有字符集和字符编码,那么我们就看不到异彩纷呈的信息世界,看到的只是晦涩难懂的 01 了

/*
	字符集规定了字符对应的二进制数值存放方式(编码)
	和某串二进制数值代表了哪个字符(解码)的转换关系
	
	而这种转换关系好比单词书,单词书规定了“书 = book”
	只有知道这种转换关系,才能听到book就对应为书
	若不知道此转换关系,则可能认为对应为苹果,就乱套了,那这个乱套就可简单理解为乱码
*/

三、常见字符集

 目前使用最广泛的西文字符集及其编码是 ASCII 字符集和 ASCII 码

常见字符集名称:ASCII字符集、GB2312字符集、GBK字符集、Unicode字符集等。
常用的字符集编码规则还有 UTF-8编码、GBK编码、Big5编码等。

  • java 所用字符集 UTF-8
  • python(2.5及以后) 所用字符集 ASCII字符集
  • C 所用字符集 ASCII字符集**
  • C++ 默认字符集 Unicode字符集
  • MySQL(8.0后) 所用字符集 utf8mb4
  • 记事本 默认字符集 UTF-8

四、什么是乱码?

乱码就是指使用不相应的字符集而造成部分或所有字符无法被阅读出现的一系列字符

汉字乱码现象有4种类型:

1. 文本乱码:

指 Windows系统显示乱码,如:桌面、提示框等。 是因为 注册表中有关字体部分的设置不当 引起的

2. 文档乱码:

可执行文件本来显示中文的地方出现乱码。
此乱码形成的原因较复杂,有文本乱码原因,或是软件中用的中文动态链接库被英文动态链接库覆盖造成的

3. 文件乱码:

主要指 邮件乱码

4. 网页乱码:

港澳的 繁体中文大五码(BIG5)与大陆 简体中文(GB2312)不能通用而造成
修正乱码可使用系统内码转换工具,将系统内码转换为对应内码,字符即可正确显示。

五、什么情况会出现乱码?

  1. 软件程序解码错误,或电子邮件程序把对方传来的邮件错误解码。

  2. 一种语言版本的操作系统安装了另外一种语言版本的应用程序,或应用程序安装的升级补丁的语言版本与应用程序原来安装的语言版本不一致。

  3. 早期单字节的应用程序在打开双字节语言的文件时不能正确识别文字的分割,在换行的地方把一个字从中分成两段,导致紧接在后面的整个一行全部都是乱码。

  4. 低版本的应用程序不能识别高版本的程序创建的文件。

  5. 软件的错误操作也会导致整个文件出现乱码

  6. 数据库配置错误,使用了错误的字符集。一般是数据库移植,还原时DBA的错误造成的。

六、如何尽量避免乱码?

1.文件路径字符尽量为英文

2.尽量使用统一的字符集编码

3.尽快统一开发环境

4.尽量多使用编码转换器。如SetCharacterEncodingFilter,使用这个很基础的一套过滤器,可将所有来自页面的POST请求全部过滤为UTF-8编码

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值