Я использую функцию транслитерации iconv для преобразования строки Unicode в ближайший эквивалент ASCII. Однако строка содержит некоторые символы, не имеющие эквивалента в ASCII. Я хочу сохранить такие символы, не удаляя их.
В настоящее время вот что я делаю:
iconv_t cd = iconv_open("ASCII//IGNORE//TRANSLIT", "UTF-8");
const char *utf8 = "ç ß ∑ a";
char* in = const_cast<char*>(utf8);
size_t in_bytes = strlen(in);
char buf[BUFSIZ] = {};
char* out = buf;
size_t out_bytes = sizeof(buf);
iconv(cd, &in, &in_bytes, &out, &out_bytes);
printf("%s", buf);
// prints
c ss a
Как мне настроить iconv для получения вывода, подобного следующему:
c ss ∑
Если это невозможно с iconv, есть ли способ добиться этого программно в противном случае?
//IGNORE
?). Во-вторых,iconv
— это просто простая утилита командной строки, в программе на C вы должны иметь возможность просто попытаться перевести каждую кодовую точку Unicode отдельно и увидеть результат. Что вы написали, что не работает? Вы должны добавить соответствующий код C. - person Marco Bonelli   schedule 02.10.2019