全网最全面、全详细的编码、解码知识( 三 )

  • UTF-8已经逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码 。
  • 互联网工程工作小组(IETF)要求所有互联网协议都必须支持UTF-8编码 。
  • UTF-8编码使用一至四个字节为每个字符编码(其中ASCII字符集中的128个字符只占1字节,还有附加符文的拉丁文、希腊文等需要2个字节,其他常用的文字占用3个字节,还有极少数的字符占用4个字节) 。
(2) UTF-16字符编码:
  • 它是实现了Unicode编码方案的一种可变长字符编码(定长码)
  • 因为Unicode字符集中收录了很多字符,但是常用的一般不会超过65535个以外的字符,所以出现了UTF-16(2字节=16位) 。
  • UTF-16优点: 它在空间效率上比UTF-32高两倍,因为每个字符只需要2个字节来存储(除去65535范围以外的),而不是UTF-32中的4个字节 。
  • UTF-16缺点: 不兼容ASCII 。
(3) UTF-32字符编码:
  • 它是实现了Unicode方案的一种定长字符编码 。
  • 它使用4个字节的数字来表示每个字母、符号,或者表意文字(ideograph) 。
  • 优缺点: 使用4个字节存储每个字符,效率高,处理速度快(因为不用计算需要几个字节进行存储),但是浪费空间 。
四:举例说明编码与解码的过程通过上面的基础规则学习,我们已经对字符集、编码、解码等基础知识有了基本的认识 。现在我们就通过图形化来举一个例子更加形象理解的这些知识(以:ASCII字符集为准,用我们编程入门的最常见的字符串:hello world为例子)
编码: 在屏幕输入文字 -> 根据指定编码类型 -> 将输入的文字编码成计算机能够识别的二进制数 -> 计算机存储编辑成的二进制数值
全网最全面、全详细的编码、解码知识

文章插图
 
解码: 计算机读取存储的二进制数值 -> 根据指定的解码类型解码 -> 将二进制数值解码成字符集中表达的字符 -> 在屏幕显示
全网最全面、全详细的编码、解码知识

文章插图
 
五:乱码出现的原因通过上面的例子,我们能够更加清楚编码和解码的过程 。同时,也看出了乱码出现的原因:
  • 编码过程和解码过程使用的编码方式不一致
  • 编码/解码对应的字符集不存在对应的字符
六:解决乱码 知道出现乱码的两个原因,要解决乱码就要同时满足以下两个条件:  
1. 编码过程和解码过程使用同一种编码方式  
2. 使用支持需要编码解码的字符串对应的字符集
全网最全面、全详细的编码、解码知识

文章插图
 
七:经常遇到的乱码场景与解决一:IDEA工具出现乱码  File -> setting -> 输入File encoding -> 设置成对应的字符集
全网最全面、全详细的编码、解码知识

文章插图
 
二:MySQL数据库乱码和编码设置  通过控制台登录到mysql后:
  • 查询当前默认的数据库编码方式:
show variables like 'character_set%'
全网最全面、全详细的编码、解码知识

文章插图
 
  • 设置数据库编码方式
//当前会话,退出控制台后又恢复回原来默认的编码方式set character_set_server=utf8;set character_set_database=utf8;//全集范围,无论是否退出控制台,以后都是使用这个编码方式set global character_set_database=utf8;set global character_set_server=utf8;八:参考和感谢  1、w3c网站-字符集和字符编码(Charset & Encoding)   
2、乱码的产生和解决
九:总结  相信看到这里,你对乱码的会有了更深的认识,学习一个知识,只有知道这个知识的原理,才不会感觉一知半解 。
  感谢你阅读本文,如果你觉得文章哪里存在错误,欢迎私信或者在下方留言指出 。如果你觉得本文对你有一些帮助,可以给我一个点赞和关注,让我有更多动力给大家带来更多的文章,谢谢 。
关注公众号【是秘密呀joy】架构师视频、技术文章、面试资料、IDEA工具免费分享,不定时抽奖,只等你来!

【全网最全面、全详细的编码、解码知识】


推荐阅读