2014-02-10 56 views
0

我想爲「C」中的語言「go」編碼一個詞法分析器。但「go」使用UTF-8,因爲它的字符集和C使用了Ascii。那麼有可能在ASCII碼中表示unicode字符?以ASCII碼錶示UTF-8

+0

那麼,有一種名爲[UTF-7](http://en.wikipedia.org/wiki/UTF-7)的編碼,但爲什麼C不能處理其他非ASCII編碼? –

+0

[Project ICU](http://site.icu-project.org/)爲C以及C++和Java提供了Unicode處理的可移植實現。 – DevSolar

+3

@TimPietzcker:呃,他需要從UTF-8轉換爲UTF-7,沒有明顯的收益。在所有這些年裏,我從未在電子郵件之外看到過使用UTF-7。 – DarkDust

回答

0

C支持multibyte strings,但你必須弄亂locales才能工作。

ASCII實際上是UTF-8的一個子集,因此您可以在某種程度上使用標準C單字節字符串函數。請記住,要求或返回長度的函數是字節計數,而不是字符計數。

對於更復雜的任何事情,您都需要外部庫。

+0

你確實提到了它,但我也想強調一下:C多字節字符串處理是語言環境敏感的! – DarkDust