【发布时间】:2010-09-18 17:37:25
【问题描述】:
【问题讨论】:
-
如果 UTF-8 字符串包含非 ASCII 字符集中的字符会怎样?
-
详细描述你的任务,否则问题太抽象,没有意义
-
libiconv (gnu.org/software/libiconv) 或其他类似的库可能有用
标签: c
【问题讨论】:
标签: c
UTF-8 是 ASCII 的超集。字符代码 0-127(即 ASCII 字符)直接映射到二进制值 0-127。如果您想将 UTF-8 转换为 ASCII,您可以简单地删除 >= 128 的所有字节。这意味着在转换后的字符串中将忽略非 ASCII 字符 - 如果这是您想要的。
请注意,对于 UTF-8 解码,您需要检测编码为多个字节的字符。字节数是最左边的 '0' 位左侧的 '1' 位的数量,这仅适用于字节 >= 128。例如,11000000 是编码为两个字节的字符的第一个字节(它有两个有效的“1”位)。这意味着您还必须删除以下字节。
由于属于多字节编码字符的字节总是 >= 128,你可以忽略上面的段落 :)
【讨论】: