Как получить значение stdin в кодировке UTF-8? - PullRequest
1 голос
/ 03 января 2012

Мне нужно написать программу на ANSI C, которая будет отображать шестнадцатеричные значения в кодировке UTF-8 каждого символа stdin, независимо от кодировки символов, используемой stdin. Например,

AÀĀ

выходы

41
C0
0100

Есть ли в C функция, которая преобразует кодировку символов в UTF-8?

1 Ответ

4 голосов
/ 03 января 2012

Вы не можете выпустить UTF-8, если вы не знаете , что поступает. Если вы знаете кодировку стандартного ввода, вы можете использовать iconv или даже ICU4C для преобразования в UTF-8,а затем сбросить гекс в обычном порядке.В некоторых случаях вы можете предположить, что stdin соответствует локали, указанной в переменной среды LANG, но ничто не мешает кому-либо запускать:

yourprogram < SomeFileFullOfISO-2022-JP
...