簡體   English   中英

UTF-8 - > C語言的ASCII

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM