2010-09-18 275 views
0

可能重复:
UTF-8 -> ASCII in C language如何将utf8字符串转换为ascii字符串?

如何将UTF8字符串为ASCII字符串转换?

+3

段落,如果UTF-8字符串包含的字符是不应该发生什么在ASCII字符集? – 2010-09-18 17:41:26

+1

更详细地描述你的任务,否则这个问题太抽象了,没有意义 – 2010-09-18 17:45:36

+0

libiconv(http://www.gnu.org/software/libiconv/)或其他类似的库可能有用 – pmg 2010-09-18 17:46:22

回答

4

UTF-8是ASCII的超集。字符代码0-127(即ASCII字符)直接映射到二进制值0-127。如果要将UTF-8转换为ASCII,则只需删除大于等于128的所有字节即可。这意味着在转换的字符串中将忽略非ASCII字符 - 如果这是您想要的。

请注意,对于UTF-8解码,您需要检测编码为多个字节的字符。字节数是最左边'0'位左边'1'的位数,这只适用于大于等于128的字节。例如,11000000是被编码为两个字节的字符的第一个字节(它有两个重要的'1'位)。这意味着你也必须删除下面的字节。

由于属于多字节编码字符的字节总是> = 128,你可以忘掉上面:)

+0

+1不错。我喜欢你的方式LOL – pmg 2010-09-18 17:47:57