是否可以使用iconv音译重音 ?
iconv_t iconv = iconv_open("ASCII//TRANSLIT", "utf-8");
例如,我想将(西班牙语)á, é, í, ó
音译为a, e, i, o
,但我需要保留ñ
。也许有办法在iconv中设置跳过的字母吗?
我知道我可以使用简单的替换,但首先我想知道是否有更好的解决方案。
答案 0 :(得分:0)
您无法通过简单地使用iconv工具来实现您在问题中描述的行为,因为它不提供跳过特定字符的选项。你可以做的是创建一个查找表(考虑到你的输入只能是UTF8 Latin1)。
以下代码可以解决这个问题:
char* stripAccents(char* text) {
char *p = text;
unsigned char c = 0;
const char* trans = "AAAAAAECEEEEIIIIDÑOOOOOx0UUUUYPsaaaaaaeceeeeiiiiOñooooo/0uuuuypy";
while ( *(p) != '\0' )
{
c = *(p);
if ( c >= 192 ) {
*(p) = trans [ c - 192 ];
}
++p;
}
return text;
}