RUST编程学习-碎片1-UTF-8编码
目录
前言
在学习过程中,又会有很多的点需要注意和深入了解,在此就专门做个番外篇知识碎片,随手可以记录知识点,巩固细节
一、UTF-8编码
在学习rust的过程中,在工作过程中也会涉及到编码类型问题,这个在之前学习编程语言中并没有去注意,这次就好好整理学习一下
1.原理
UTF-8是一种变长编码格式,采用1-4个字节为字符进行编码:
-
ASCII字符(0-127)使用1个字节
-
大部分汉字采用3个字节编码
-
少量不常用汉字采用4个字节编码
2. 编码特性
UTF-8的核心设计目标是在兼容性和效率之间取得平衡
关于编码特性,可以参考:编码格式:UTF-8(8-bit Unicode Transformation Format)_utf-8编码-CSDN博客
编码的区别:字符编码的概念(UTF-8、UTF-16、UTF-32都是什么鬼)-CSDN博客
3. 应用
UTF-8因其卓越的特性,已成为互联网和计算机系统中最广泛使用的字符编码标准:
-
互联网 (WWW):
-
HTML:
<meta charset="UTF-8">是HTML5的标准声明,确保网页能正确显示各种语言的字符。 -
XML: 默认编码也是UTF-8。
-
JSON: 通常使用UTF-8编码传输文本数据。
-
URL: 虽然URL本身有特定编码规则,但其中的非ASCII字符通常建议先转换为UTF-8字节序列再进行百分号编码(Percent-encoding)。
-
电子邮件: 现代邮件协议(如SMTP)支持使用UTF-8传输邮件头和正文,以支持国际化邮件地址和内容。
-
-
操作系统:
-
Unix/Linux/macOS: 系统内部和终端环境普遍使用UTF-8。
-
Windows: 虽然内部使用UTF-16,但其支持的文件系统和许多应用程序(如记事本、浏览器)都完全支持读写UTF-8编码的文件。
-
-
文件存储:
-
文本文件: 是存储包含多语言文本文件的理想选择。
.txt,.csv,.json,.xml等文件常采用UTF-8编码。 -
源代码: 现代编程语言(如Python 3+, Java, Go, Rust等)的源文件通常默认或推荐使用UTF-8编码,以便在代码中直接使用各种语言的标识符、字符串和注释。
-
-
数据库:
-
现代数据库系统(如MySQL, PostgreSQL, SQLite, MongoDB)都支持使用UTF-8(或其变体,如MySQL的
utf8mb4)存储文本数据,以容纳全球字符集。
-
-
软件开发和API:
-
跨平台应用程序和库优先使用UTF-8进行字符串处理和通信,以保证一致性和兼容性。
-
网络API(如RESTful API)通常使用UTF-8编码的JSON或XML作为数据交换格式。
-
二、案例
1.编译案例
案例1:
let mut chars = expression.chars().peekable();
1. expression.chars()
-
作用:获取字符串的字符迭代器。
-
解释:在 Rust 中,字符串默认不是按字符索引的(因为 UTF-8 编码的原因),直接通过下标访问可能不安全或效率低。
.chars()方法返回一个迭代器,让我们可以按顺序逐个访问字符串中的字符(char)
let chars: Vec<char> = input_str.chars().collect();
2.input_str .chars()
-
作用:获取字符串的字符迭代器。
-
input_str是我们要处理的字符串。 -
chars()是字符串的一个方法。在 Rust 中,字符串默认不支持像数组那样直接通过下标(如input_str[0])访问单个字符,因为 Rust 的字符串是 UTF-8 编码的,有些字符可能占用多个字节。 -
调用
.chars()会返回一个“迭代器”,它就像一个传送带,把字符串里的字符一个接一个地排队拿出来。
3.for cmd in cmds.chars()
let cmds = String::from("GLR");
for cmd in cmds.chars() {
// 这里是循环体
}
总结
在面对String类型的时候,要用.chars(),for循环里面也需要这样转换才行
在不断学习中进行更新……
更多推荐
所有评论(0)