2010-09-18 312 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