从C中的字符串中删除重音

Jac*_*ack 5 c non-ascii-characters

有一种更有效的方法可以从字符串中删除重音而不用一个大数组来替换字符吗?

例如:

removeaccents("áèfoo")
Run Code Online (Sandbox Code Playgroud)

输出:

aefoo
Run Code Online (Sandbox Code Playgroud)

在ASCII表中没有重音符号,我不知道怎么做.提前致谢.:)

Tim*_*nes 7

听起来像你在寻找unac().从手册页:

unac 是一个C库,可以删除字符的重音,无论字符集(ISO-8859-15,ISO-CELTIC,KOI8-RU ...)只要iconv(3)能够将其转换为UTF-16(Unicode).

我找不到下载页面(我认为它的意思是在这里,但链接目前正在404).如果您使用的是ubuntu,可以使用:

sudo apt-get install libunac1-dev
Run Code Online (Sandbox Code Playgroud)

假设您正在使用gcc,一旦安装完毕,您需要添加-lunac到编译器选项(告诉编译器链接unac库).