繁体   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