Печать литералов Unicode в C

Я делаю приложение OpenVG для Raspberry Pi, которое отображает некоторый текст, и мне нужна поддержка иностранных символов (в данном случае польского). Я планирую подготовить функцию, которая отображает символы юникода в литералы в C на каком-либо языке более высокого уровня, но сейчас существует проблема с печатью этих литералов в C.

Учитывая код ниже:

//both output the "ó" character, as expected
char     A[] =  "\xF3";
wchar_t  B[] = L"\xF3";

//"ś" is expected as output but instead I get character with code 0x5B - "["char     A[] =  "\x15B";
wchar_t  B[] = L"\x15B";

Большинство польских символов имеют трехзначные шестнадцатеричные коды. Когда я пытаюсь вывести «ś» (0x15B), вместо этого он печатает символ «[» (0x5B). Оказывается, я не могу печатать символы Unicode с более чем 2-значными кодами.

Является ли используемый тип данных причиной? Я рассмотрел использование char16_t и char32_t, но файлы заголовков нигде не найдены в системе.

1

Решение

Это то, что в этом

char A[]={'\xc5','\x9b'};

c59b — это «ś» (0x15B) по UTF-8.

1

Другие решения


По вопросам рекламы [email protected]