[英]Attempting to print non-ASCII UTF-8 characters in Xcode in C language (not C++, not Objective C) on MacBook 10.6.8
[英]UTF-8 -> ASCII in C language
我有一個簡單的問題,我無法通過互聯網找到任何地方,如何在C中僅使用標准的lib將UTF-8轉換為ASCII(大多數重音字符為相同的字符,無需重音)? 我找到了大多數語言的解決方案,但特別是C語言。
謝謝!
編輯:評論的一些人讓我仔細檢查我需要什么,我誇大了。 我只需要一個關於如何創建一個函數的想法:帶有重音的char - >沒有重音的char。 :)
看看libiconv 。 即使你堅持不用圖書館這樣做,你也可能會在那里找到靈感。
一般來說,你不能。 UTF-8涵蓋的不僅僅是重音字符。
沒有內置的方法可以做到這一點。 UTF-8和ASCII之間幾乎沒有什么區別,除非你在談論高級字符,無論如何都無法用ASCII表示。
如果你有一個你想要的特定映射(例如帶有重音 - > a)那么你應該只是將其作為字符串替換操作來處理。
每個體面的Unicode支持庫(當然不是標准庫)都有一種方法來分解KC或KD形式的字符串。 這將變音符號與字母分開。 給你一個過濾它們的機會。 不太確定這是值得追求的,結果只是對母語讀者的胡言亂語,而不是每個字母都是可分解的。 換句話說,垃圾帶有問號。
由於這是家庭作業,我猜你的老師是無能為力的,並且對UTF-8一無所知,並且可能在20世紀80年代被“代碼頁”和“擴展的ASCII”所困擾(你應該從你的詞匯中刪除你的詞匯,如果你還沒有)。 您的老師可能希望您編寫一個128字節的查找表,將128-255范圍內的CP437或Windows-1252字節映射到類似的ASCII字母。 它會像...
void strip_accents(unsigned char *dest, const unsigned char *src)
{
static const unsigned char lut[128] = { /* mapping here */ };
do {
*dest++ = *src < 128 ? *src : lut[*src];
} while (*src++);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.