![]() |
1
8
首先,正如@quinmars所说,utf-8存储在const char*字符串中。它不仅是一个7位ASCII的超集(代码点<=127总是以单字节编码,就像它们自己一样),而且还要注意,带有这些值的字节永远不会被用作代码点>=128的多字节值的编码的一部分。因此,如果您看到一个字节==44,它是一个“<”字符等。XML中的所有元字符都是7位ASCII。因此,我们只需解析XML,在元字符所说的位置断开字符串,将片段(可能包括非ASCII字符)粘贴到char*或std::string中,并且返回的片段仍然是有效的utf-8字符串,即使解析器不专门知道utf-8。 更进一步(不是特定于XML,而是相当聪明),更复杂的东西通常只起作用(tm)。例如,如果按字节对UTF-8进行字典排序,则会得到与按代码点对其进行字典排序相同的答案,尽管所使用的字节数有所不同,因为引入较长(因此值较高)代码点的前缀字节在数字上大于较小值的前缀字节。 |
![]() |
2
2
UTF-8与7位ASCII码兼容。如果一个字节的值大于127,则表示多字节字符开始。根据第一个字节的值,您可以看到字符将占用多少字节,可以是2-4个字节,包括第一个字节(技术上也可以是5或6个字节,但它们不是有效的UTF-8)。这里有一个关于UTF-8的好资源: UTF-8 and Unicode FAQ 另外,用于utf8的wiki页面信息量很大。由于utf-8是基于字符的,并且以0结尾,所以大多数情况下都可以使用标准字符串函数。唯一重要的是字符计数可以与字节计数不同。strlen()等函数返回字节计数,但不一定返回字符计数。 |
![]() |
3
0
通过使用1到4个字符对一个Unicode码位进行编码。 |
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |