【2023,学点儿新Java-47】常见字符集介绍:ASCII码、 ISO-8859-1字符集、GBxxx字符集、Unicode码的缺陷、UTF-8 | 补充:条件运算符的练习

前情提要:

  • 【2023,学点儿新Java-46】条件运算符:语法格式及示例;基础练习:获取两个数/三个数中的较大值;星期运算 | 附:测试代码 位运算符的使用 | 运算符优先级
  • 【2023,学点儿新Java-45】位运算符:基本语法(左移<<、右移>>、无符号右移>>>、按位与&、按位或|、按位异或^、按位取反~) | 补充练习:逻辑运算符(区分&和&&、| 和 ||)
  • 【2023,学点儿新Java-44】逻辑运算符:基本语法、代码举例、案例练习(区分:&和&&,|和||)、&&与||综合应用(易错题、易混淆)
  • 更多系列文章,可参阅本专栏或博主主页哦~

 
我们不推崇个人英雄主义,但英雄,却值得我们崇拜和铭记。

 

作者主页: 追光者♂

        

个人简介:
 
[1] 计算机专业硕士研究生
 
[2] 2022年度博客之星人工智能领域TOP4
 
[3] 阿里云社区特邀专家博主
 
[4] CSDN-人工智能领域优质创作者
 
[5] 预期2023年10月份 · 准CSDN博客专家  
 

  • 无限进步,一起追光!!!

        

感谢大家 点赞  收藏⭐   留言!!!

        

本篇主要介绍常见字符集的拓展知识,旨在帮助大家开拓视野。从编码和解码讲起,然后介绍了常见的字符集,如ASCII码、 ISO-8859-1字符集、GBxxx字符集、Unicode码和UTF-8等字符集,本篇较为详细地介绍了这些字符集的知识,但仍然存在不足,希望大家理解。第二部分给出条件运算符的实例code以及测试输出和简析。有帮助的话,点个赞吧!

目录

  • 一、字符集【拓展知识】
    • 1.1 简介
    • 1.2 ASCII码
    • 1.3 ISO-8859-1字符集
    • 1.4 GBxxx字符集
    • 1.5 Unicode码
    • 1.6 UTF-8
  • 二、条件运算符的练习
    • 2.1 实例code
    • 2.2 测试输出 & 简析

一、字符集【拓展知识】

1.1 简介

  • 编码与解码

计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码 。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码

  • 字符编码(Character Encoding) : 就是一套自然语言的字符与二进制数之间的对应规则。

  • 字符集:也叫编码表。是一个系统支持的所有字符的集合,包括各国家文字、标点符号、图形符号、数字等。


字符集(Character Set),也称字符编码(Character Encoding),是一种 将字符与二进制数据 之间进行映射的规则或标准。在计算机系统中,所有的字符都是以二进制形式存储和处理的,字符集规定了字符与对应的二进制编码之间的关系。

下面是一些常见的字符集及其简介:(下面也会介绍~)

  1. ASCII(American Standard Code for Information Interchange,美国信息交换标准代码):ASCII字符集是最早的字符集之一,使用7位二进制编码来表示128个字符。它包含了基本拉丁字母、数字、标点符号和一些控制字符。

  2. UTF-8(Unicode Transformation Format-8,8位Unicode转换格式):UTF-8是一种变长编码,可以表示Unicode字符集中的所有字符。它使用8位二进制编码,兼容ASCII字符集,并能够表示更多的字符。UTF-8是互联网上最常用的字符集之一。

  3. Unicode(统一码、万国码):Unicode字符集包含了世界上几乎所有的字符,包括各种语言的字母、符号、表情符号等。它采用固定长度的编码方式,常见的编码方式有UTF-8、UTF-16等。

  4. ISO-8859(国际标准化组织8859标准):ISO-8859是一系列字符集标准,每个标准定义了一种特定语言的字符集。ISO-8859-1是其中最常见的字符集,也称为Latin-1,它包含了西欧语言的字符。

  5. GB2312(国标2312):GB2312是中国国家标准规定的汉字字符集,它使用两个字节来编码汉字字符,并包含了基本的拉丁字母和符号。

  6. GBK(汉字内码扩展规范):GBK是对GB2312的扩展,它包含了更多的汉字字符。

  7. Big5(繁体中文字符集):Big5是用于繁体中文的字符集,主要用于台湾地区。

以上这些是常见的字符集(之一),不同的字符集适用于不同的应用场景在选择字符集时,需要考虑到所需编码的字符范围、语言要求、系统兼容性以及应用环境等因素。

1.2 ASCII码

  • ASCII码American Standard Code for Information Interchange,美国信息交换标准代码):上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码。
  • ASCII码用于显示现代英语,主要包括控制字符(回车键、退格、换行键等)和可显示字符(英文大小写字符、阿拉伯数字和西文符号)。
  • 基本的ASCII字符集,使用7位(bits)表示一个字符(最前面的1位统一规定为0),共128个字符。比如:空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。
  • 缺点:不能表示所有字符。

【2023,学点儿新Java-47】常见字符集介绍:ASCII码、 ISO-8859-1字符集、GBxxx字符集、Unicode码的缺陷、UTF-8 | 补充:条件运算符的练习_第1张图片


补充介绍:

ASCII码使用7位二进制编码(0-127),可以表示128个字符,包括基本的拉丁字母、数字、标点符号和一些控制字符。

以下是ASCII码的一些特点和范围:

  1. 字符范围:ASCII码定义了128个字符,其中包括33个不可打印的控制字符和95个可打印字符。

  2. 控制字符:控制字符主要用于控制设备和通信,如换行符(LF)、回车符(CR)、制表符(Tab)等。

  3. 可打印字符:可打印字符包括基本的拉丁字母(大写和小写)、数字、标点符号(如逗号、句号、感叹号等)、特殊符号(如美元符号、百分号等)。

  4. 编码方式:每个字符对应一个唯一的编码值,使用7位二进制表示,范围从0000000(0)到1111111(127)。

  5. 扩展字符集:由于只使用7位二进制,因此ASCII码无法表示非英文字符和更多的特殊符号。后来的字符集如ISO-8859和Unicode提供了扩展字符集来满足不同语言和字符的需求。

ASCII码的应用广泛,特别是在计算机系统、通信和文件传输中常常使用。ASCII码为字符赋予了唯一的标识,使得计算机能够正确地存储、传输和处理文本数据。

需要注意的是,ASCII码 在国际化和多语言环境下的局限性越来越明显。为了表示更多的字符和语言,Unicode及其变种如UTF-8等字符集得到了广泛应用,成为了现代计算机系统中常用的字符编码方式。

1.3 ISO-8859-1字符集

  • 拉丁码表,别名Latin-1,用于显示欧洲使用的语言,包括荷兰语、德语、意大利语、葡萄牙语等。
  • ISO-8859-1使用单字节编码,兼容ASCII编码。

补充知识:

ISO-8859-1,也称为Latin-1,是国际标准化组织(ISO)定义的字符集标准之一。它是ISO-8859系列中的第一个字符集,涵盖了欧洲常见的语言,特别是用拉丁字母编写的西欧语言。

以下是关于ISO-8859-1字符集的一些特点:

  1. 字符范围:ISO-8859-1定义了256个字符,使用8位二进制编码(0-255)。

  2. 包含字符:ISO-8859-1包含了基本的拉丁字母(大写和小写)、数字、标点符号和一些特殊符号(如欧元符号、版权符号等)。

  3. 与ASCII码的关系:ISO-8859-1是ASCII码的扩展,其中的前128个字符与ASCII码保持一致。因此,ASCII码的范围是ISO-8859-1的一部分。

  4. 跨语言支持:ISO-8859-1主要用于支持包含法语、西班牙语、德语等语言的内容,这些语言使用拉丁字母。

需要注意的是,ISO-8859-1字符集虽然是一种常见的字符集,但它仅覆盖了欧洲语言中的一小部分字符。对于其他语言,如亚洲的中文、日文和韩文等,以及其他特殊字符,ISO-8859-1是无法表示的。

随着计算机全球化和多语言环境的发展,Unicode和其变种如UTF-8 逐渐取代了ISO-8859-1作为 更全面和兼容性更好的字符编码方案。Unicode能够表示几乎所有的字符,并且通过UTF-8编码方案,能够兼容ISO-8859-1的前128个字符。

 

1.4 GBxxx字符集

  • GB就是国标的意思,是为了显示中文而设计的一套字符集。
  • GB2312:简体中文码表。一个小于127的字符的意义与原来相同,即向下兼容ASCII码。但两个大于127的字符连在一起时,就表示一个汉字,这样大约可以组合了包含7000多个简体汉字,此外数学符号、罗马希腊的字母、日文的假名们都编进去了,这就是常说的"全角"字符,而原来在127号以下的那些符号就叫"半角"字符了。
  • GBK:最常用的中文码表。是在GB2312标准基础上的扩展规范,使用了双字节编码方案,共收录了21003个汉字,完全兼容GB2312标准,同时支持繁体汉字以及日韩汉字等。
  • GB18030:最新的中文码表。收录汉字70244个,采用多字节编码,每个字可以由1个、2个或4个字节组成。支持中国国内少数民族的文字,同时支持繁体汉字以及日韩汉字等。

补充介绍:

GBxxx字符集是中国国家标准规定的汉字字符集,用于表示中文字符。以下是几个常见的GB字符集及其简介:

  1. GB2312(国标2312):GB2312是中国国家标准规定的汉字字符集,于1980年发布。它使用两个字节编码,其中第一个字节范围是0xB0 - 0xF7,第二个字节范围是0xA1 - 0xFE,共收录了约7000多个常用汉字以及包括拉丁字母、数字、标点符号等在内的其他字符。

  2. GBK(汉字内码扩展规范):GBK是GB2312的扩展字符集,于1995年发布。它在兼容GB2312的基础上,新增收录了约21000个汉字,包括繁体字、生僻字等。

  3. GB18030(汉字内码扩展规范):GB18030是GB系列中最新的字符集标准,于2000年发布。它在兼容GBK的基础上,进一步扩展以支持所有已知的汉字字符,包括中国少数民族文字、日文字、韩文字等。

这些GB字符集被广泛应用于中国及其周边地区的计算机系统、操作系统、数据库等领域。它们为中文字符的存储、处理和交换提供了标准化的解决方案。

需要注意的是,GB字符集主要适用于简体中文和繁体中文的字符表示,对于其他语言的字符,如拉丁字母、日语假名、韩文等,GB字符集是无法表示的。对于更全面和国际化的字符表示,Unicode及其变种如UTF-8成为了更常用和广泛支持的字符编码方式。

 

1.5 Unicode码

  • Unicode编码为表达任意语言的任意字符而设计,也称为统一码、标准万国码。Unicode 将世界上所有的文字用2个字节统一进行编码,为每个字符设定唯一的二进制编码,以满足跨语言、跨平台进行文本处理的要求。

  • Unicode 的缺点:这里有三个问题:

    • 第一,英文字母只用一个字节表示就够了,如果用更多的字节存储是极大的浪费
    • 第二,如何才能区别Unicode和ASCII?计算机怎么知道两个字节表示一个符号,而不是分别表示两个符号呢?
    • 第三,如果和GBK等双字节编码方式一样,用最高位是1或0表示两个字节和一个字节,就少了很多值无法用于表示字符,不够表示所有字符
  • Unicode在很长一段时间内无法推广,直到互联网的出现,为解决Unicode如何在网络上传输的问题,于是面向传输的众多 UTF(UCS Transfer Format)标准出现。具体来说,有三种编码方案,UTF-8、UTF-16和UTF-32。

补充说明:

Unicode码 是一种全球通用的字符编码标准,用于表示世界上几乎所有的字符,包括各国文字、符号、标点符号、特殊符号等。Unicode的目标是为不同语言、文化和技术提供统一的字符表示方法,使得任何计算机系统都能够正确地处理和显示多语言的文本数据。

下面是关于Unicode码的一些特点和重要概念:

  1. 字符表示范围Unicode定义了超过1.1万多个字符,其中包括了几乎所有世界上已知的字符和符号。

  2. 编码方式:Unicode使用16位或32位二进制编码来表示每个字符。最常用的编码方式是UTF-16(16位编码)和UTF-8(8位编码),它们可以将 Unicode中的字符映射为对应的二进制序列。

  3. 扩展字符集:Unicode不仅包括 基本拉丁字母、拉丁字母扩展、希腊字母、西里尔字母等常见字符,还支持其他语言、符号和特殊字符。Unicode通过多个扩展标准(如Unicode增补区、Unicode补充字符等)来添加更多的字符。

  4. 兼容性:Unicode被设计为 兼容现有的字符编码标准(如ASCII码、ISO-8859等),使得这些编码中的字符可以直接映射到Unicode中相同的编码位置,保证了向后兼容性。

Unicode的广泛应用 使得不同国家和地区的人们 能够在计算机上交流和共享信息,无论是在操作系统、应用程序、Web页面还是数据库中。它为程序员、开发人员和设计师 提供了统一的字符处理方法,避免了字符转换和乱码问题

需要注意的是,由于Unicode码的大规模,单纯使用Unicode存储和传输文本可能会占用较多的存储空间和带宽。因此,UTF-8编码成为了一种常用的Unicode编码方式,它能够以变长的形式表示Unicode字符,并在保证兼容性的同时减小了存储和传输的开销

1.6 UTF-8

  • Unicode是字符集,UTF-8、UTF-16、UTF-32是三种将数字转换到程序数据的编码方案。顾名思义,UTF-8就是每次8个位传输数据,而UTF-16就是每次16个位。其中,UTF-8 是在互联网上使用最广的一种 Unicode 的实现方式。
  • 互联网工程工作小组(IETF)要求所有互联网协议都必须支持UTF-8编码。所以,我们开发Web应用,也要使用UTF-8编码。UTF-8 是一种变长的编码方式。它可以使用 1-4 个字节表示一个符号它使用一至四个字节为每个字符编码,编码规则:
    1. 128个US-ASCII字符,只需一个字节编码。
    2. 拉丁文等字符,需要二个字节编码。
    3. 大部分常用字(含中文),使用三个字节编码。
    4. 其他极少使用的Unicode辅助字符,使用四字节编码。
  • 举例

Unicode符号范围 | UTF-8编码方式

(十六进制)           | (二进制)

————————————————————|—–—–—–—–—–—–—–—–—–—–—–—–—–—–

0000 0000-0000 007F | 0xxxxxxx(兼容原来的ASCII)

0000 0080-0000 07FF | 110xxxxx 10xxxxxx

0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx

0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

【2023,学点儿新Java-47】常见字符集介绍:ASCII码、 ISO-8859-1字符集、GBxxx字符集、Unicode码的缺陷、UTF-8 | 补充:条件运算符的练习_第2张图片


注意:在中文操作系统上,ANSI(美国国家标准学会、AMERICAN NATIONAL STANDARDS INSTITUTE: ANSI)编码即为GBK;在英文操作系统上,ANSI编码即为ISO-8859-1。

【2023,学点儿新Java-47】常见字符集介绍:ASCII码、 ISO-8859-1字符集、GBxxx字符集、Unicode码的缺陷、UTF-8 | 补充:条件运算符的练习_第3张图片


补充介绍:

UTF-8(Unicode Transformation Format-8)是一种用于表示Unicode字符的可变长度字符编码方式。它是Unicode的一种具体实现,能够表示几乎所有的Unicode字符。

下面是UTF-8的一些特点和重要概念:

  1. 可变长度编码:UTF-8使用1到4个字节来表示不同的字符。基本的ASCII字符(U+0000 至 U+007F)使用单个字节表示,而其他字符根据其Unicode码点采用多字节进行编码。

  2. 兼容ASCII:UTF-8是一种兼容ASCII标准的编码方式。ASCII字符在UTF-8中使用一个字节编码,因此,所有的ASCII文本在UTF-8中保持不变,同时也能够容纳各种语言的ASCII字符。

  3. 可变长性:UTF-8能够根据字符的具体需求动态分配所需的字节数。这使得UTF-8在存储和传输文本时,能够有效地使用和节约空间。与其他固定长度的Unicode编码方式相比,UTF-8能够根据文本中字符的实际情况进行灵活编码,减小了开销。

  4. 多语言支持:UTF-8能够表示几乎所有的Unicode字符,包括世界上的各种语言、符号、表情符号、特殊符号等。它被广泛应用于各种计算机系统、操作系统、Web页面、数据库等领域,提供了国际化和多语言支持。

需要注意的是,UTF-8在存储大多数 非拉丁语系的字符时 会占用更多的字节数,因为这些字符 需要使用多个字节进行编码。尽管如此,UTF-8仍然是目前最常用的Unicode编码方式,因为它的兼容性、灵活性和可节省空间的特点。

简言之,UTF-8是一种灵活、节省空间且广泛应用的Unicode字符编码方式,它能够表示几乎所有的Unicode字符,并提供了国际化和多语言的支持。

 

二、条件运算符的练习

2.1 实例code

/*
测试运算符的使用6:条件运算符

1. (条件表达式)? 表达式1 : 表达式2

2. 说明:
① 条件表达式的结果是boolean类型。
② 如果条件表达式的结果是true,则执行表达式1。否则,执行表达式2。
③ 表达式1 和 表达式2 需要是相同的类型或能兼容的类型。

④ 开发中,凡是可以使用条件运算符的位置,都可以改写为if-else。
          反之,能使用if-else结构,不一定能改写为条件运算符。
  
  建议,在二者都能使用的情况下,推荐使用条件运算符。因为执行效率稍高。

*/
class ConditionTest {
	public static void main(String[] args) {
		
		String info = (2 > 10)? "表达式1" : "表达式2";
		System.out.println(info);

		double result = (2 > 1)? 1 : 2.0;
		System.out.println(result);

		//练习1:获取两个整数的较大值
		int m = 10;
		int n = 20;

		int max = (m > n)? m : n;
		System.out.println("较大值为:" + max);

		//练习2:获取三个整数的最大值
		int i = 20;
		int j = 30;
		int k = 23;

		int tempMax = (i > j)? i : j;
		int finalMax = (tempMax > k)? tempMax : k;
		System.out.println(finalMax);

		//合并以后的写法:不推荐
		int finalMax1 = (((i > j)? i : j) > k)? ((i > j)? i : j) : k;
		System.out.println(finalMax1);
	}
}

2.2 测试输出 & 简析

【2023,学点儿新Java-47】常见字符集介绍:ASCII码、 ISO-8859-1字符集、GBxxx字符集、Unicode码的缺陷、UTF-8 | 补充:条件运算符的练习_第4张图片

简析:

上述代码是一个 Java 程序,主要演示了条件运算符(三元运算符)的使用。

代码中的第一个示例是:

String info = (2 > 10)? "表达式1" : "表达式2";
System.out.println(info);

这里,条件表达式 (2 > 10) 的结果为 false,所以 info 的值将被赋为 "表达式2"。然后,在控制台打印出 info 的值,结果是 "表达式2"

第二个示例是:

double result = (2 > 1)? 1 : 2.0;
System.out.println(result);

这里,条件表达式 (2 > 1) 的结果为 true,所以 result 的值将被赋为 1。然后,在控制台打印出 result 的值,结果是 1.0

接下来的练习示例是 获取两个整数的较大值和三个整数的最大值。这两个示例都使用了条件表达式来比较和选择值。例如,在获取两个整数的较大值时:

int max = (m > n)? m : n;
System.out.println("较大值为:" + max);

这里,如果 m 大于 n,则 max 将被赋值为 m,反之则被赋值为 n。然后,在控制台打印出 "较大值为:" + max,显示出较大的那个整数。

最后一个示例 展示了对三个整数求最大值的情况。通过 嵌套使用条件表达式,可以比较 三个整数之间的大小 并得到最大值。例如:

int tempMax = (i > j)? i : j;
int finalMax = (tempMax > k)? tempMax : k;
System.out.println(finalMax);

这里,首先通过 (i > j)? i : j 得到 ij 中较大的值,然后再将较大值与 k 进行比较,得到最终的最大值。然后,在控制台打印出最大值。

值得一提的是,代码中还包含了一个不推荐的方式来合并求最大值的写法:

int finalMax1 = (((i > j)? i : j) > k)? ((i > j)? i : j) : k;
System.out.println(finalMax1);

需要指出,这种写法虽然有效,但是可读性较差。因此,在实际开发中,建议使用嵌套的条件表达式来表达逻辑更加清晰的代码。

 


 

热门专栏推荐

  • Python&AI专栏:【Python从入门到人工智能】
  • 前端专栏:【前端之梦~代码之美(H5+CSS3+JS.】
  • 文献精读&项目专栏:【小小的项目 (实战+案例)】
  • C语言/C++专栏:【C语言、C++ 百宝书】(实例+解析)
  • Java系列(Java基础/进阶/Spring系列/Java软件设计模式等)
  • 问题解决专栏:【工具、技巧、解决办法】
  • 加入Community 一起追光:追光者♂社区

 

持续创作优质好文ing…✍✍✍

 

记得一键三连哦!!!

 

求关注!求点赞!求个收藏啦!

在这里插入图片描述

你可能感兴趣的:(JavaSE,条件运算符,三元运算符,ASCII码,字符集,字符编码,UTF-8)