Я делаю приложение 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, но файлы заголовков нигде не найдены в системе.
Это то, что в этом
char A[]={'\xc5','\x9b'};
c59b — это «ś» (0x15B) по UTF-8.