常见字符集&乱码问题

常见字符集&乱码问题字符集常用字符集分类ASCII及其扩展字符集作用:表语英语及西欧语言。位数:ASCII是用7位表示的,能表示128个字符;其扩展使用8位表示,表示256个字符。范围:ASCII从00到7F,扩展从00到FF。ISO-8859-1字符集作用:扩展ASCII,表示西欧、希腊语等。位数:8位,范围:从00到FF,兼容ASCII字符集。GB2312字符集作用:国家简体中文字符集,兼容ASCII。位数:使用2个字节表示,能表示7445个符号,包括6763个汉字,几乎覆盖所

大家好,又见面了,我是你们的朋友全栈君。

字符集

常用字符集分类

ASCII及其扩展字符集

作用:表语英语及西欧语言。

位数:ASCII是用7位表示的,能表示128个字符;其扩展使用8位表示,表示256个字符。

范围:ASCII从00到7F,扩展从00到FF。

ISO-8859-1字符集

作用:扩展ASCII,表示西欧、希腊语等。

位数:8位, 范围:从00到FF,兼容ASCII字符集。

GB2312字符集

作用:国家简体中文字符集,兼容ASCII。

位数:使用2个字节表示,能表示7445个符号,包括6763个汉字,几乎覆盖所有高频率汉字。

范围:高字节从A1到F7, 低字节从A1到FE。将高字节和低字节分别加上0XA0即可得到编码。

GBK字符集

作用:它是GB2312的扩展,加入对繁体字的支持,兼容GB2312。

位数:使用2个字节表示,可表示21886个字符。

范围:高字节从81到FE,低字节从40到FE。

UNICODE字符集

作用:为世界650种语言进行统一编码,兼容ISO-8859-1。

位数:UNICODE字符集有多个编码方式,分别是UTF-8,UTF-16和UTF-32。

BIG5字符集

作用:统一繁体字编码。

位数:使用2个字节表示,表示13053个汉字。

范围:高字节从A1到F9,低字节从40到7E,A1到FE。

GB18030字符集

作用:它解决了中文、日文、朝鲜语等的编码,兼容GBK。

位数:它采用变字节表示(1 ASCII,2,4字节)。可表示27484个文字。

范围:1字节从00到7F; 2字节高字节从81到FE,低字节从40到7E和80到FE;4字节第一三字节从81到FE,第二四字节从30到39。

UCS字符集

作用:国际标准 ISO 10646 定义了通用字符集 (Universal Character Set)。它是与UNICODE同类的组织,UCS-2和UNICODE兼容。

位数:它有UCS-2和UCS-4两种格式,分别是2字节和4字节。

范围:目前,UCS-4只是在UCS-2前面加了0x0000。

按所表示的文字分类

语言 字符集  正式名称
英语、西欧语ASCII ISO-8859-1 MBCS 多字节
简体中文 GB2312 MBCS 多字节
繁体中文 BIG5 MBCS 多字节
简繁中文 GBK MBCS 多字节
中文、日文及朝鲜语 GB18030 MBCS 多字节
各国语言 UNICODE,UCS DBCS 宽字节

 

编码间的转换:

要求:要知道当前内容的编码格式和要转换为的编码格式:

示例:

1

2

String username = request.getParameter("username").trim();

String password = request.getParameter("password").trim();

获取到的String类型变量:username和password的编码格式为:ISO-8859-1   

如何将他们转换成UTF-8编码,不要出现乱码,代码如下:

1

2

3

4

5

String parameter = request.getParameter("username");

//获取到参数对应的二进制数

byte[] temp = parameter.getBytes("iso-8859-1");

//通过对应的二进制数 手动编码成utf-8的字符串

String param = new String(temp, "utf-8");

 原理:

    相同的内容在计算机中的二进制编码是一样的,所以在不同编码间内容传递时,要想不出现乱码,先将该内容按其原编码转换为二进制序列。然后再将这个二进制序列按照要转换的编码进行翻译,就不会出现乱码。

 

出现的乱码形式的含义:

??????    —>    代表字符编码不匹配造成

å¸é¾       —>    代表没有该编码方式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137734.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python进阶(11)生成器[通俗易懂]

    python进阶(11)生成器[通俗易懂]生成器利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据。

    2022年7月28日
    7
  • 电力系统分析matlab仿真_电力系统稳定性分析

    电力系统分析matlab仿真_电力系统稳定性分析基于Wirtinger不等式的时滞电力系统稳定性判定方法【专利摘要】本发明公开了一种基于Wirtinger不等式的时滞电力系统稳定性判定方法,用于分析电力系统所能承受的最大时滞稳定裕度。该方法的具体步骤如下:首先,建立考虑时滞影响的电力系统模型。然后,针对所建模型构建Lyapunov泛函,在泛函的求导过程中通过采用Wirtinger不等式进行放缩,以减少判据的保守性。最后将所得判据用一组线性矩阵不…

    2022年10月1日
    5
  • python pip 换源_python添加pip环境变量

    python pip 换源_python添加pip环境变量你好,我是悦创。我接下来,把所有Pythonpip换源的方法,都整理下来。第一种方法打开appdata文件夹,在资源管理器的地址栏输入%appdata%后回车:2.新建一个pip文件夹,在pip文件夹里面新建一个配置文件pip.ini:3.在配置文件中输入如下内容后保存即可:[global]timeout=6000index-url=https://pypi.tuna.tsinghua.edu.cn/simpletrusted-host=py

    2025年6月15日
    3
  • 日更第11天:Linux常用命令之chmod用法[通俗易懂]

    日更第11天:Linux常用命令之chmod用法[通俗易懂]避免退学

    2022年10月20日
    4
  • pycharm为什么有中文就运行不了_pycharm为什么不能运行

    pycharm为什么有中文就运行不了_pycharm为什么不能运行1.下载并解压JBR(链接:link)我选的是左上角第一个2.替换pycharm安装文件里的jbr文件3.重启pycharm即可JBR链接地址:https://confluence.jetbrains.com/pages/viewpage.action?pageId=173178989

    2022年8月29日
    7
  • 第k短路径_典型的分类算法K均值

    第k短路径_典型的分类算法K均值给定一张 N 个点(编号 1,2…N),M 条边的有向图,求从起点 S 到终点 T 的第 K 短路的长度,路径允许重复经过点或边。注意: 每条最短路中至少要包含一条边。输入格式第一行包含两个整数 N 和 M。接下来 M 行,每行包含三个整数 A,B 和 L,表示点 A 与点 B 之间存在有向边,且边长为 L。最后一行包含三个整数 S,T 和 K,分别表示起点 S,终点 T 和第 K 短路。输出格式输出占一行,包含一个整数,表示第 K 短路的长度,如果第 K 短路不存在,则输出 −1。数据范围

    2022年8月10日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号