Я делаю приложение OpenVG для малины Pi, которое отображает текст, и мне нужна поддержка иностранных символов (в данном случае, польского). Я планирую подготовить функцию, которая отображает символы Юникода литералы в C в некотором языке более высокого уровня, но на данный момент есть проблема с печатью этих литералов в C.Печать литералов unicode в 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). Оказывается, я не могу напечатать любые символы Юникода с более чем 2-значными кодами.
Используется тип данных причина? Я рассмотрел использование char16_t и char32_t, но файлы заголовков нигде не найдены в системе.
Если до сих пор все черновые строки были напечатаны правильно, это не переключится на UTF16/32 только потому, что вы так думаете. Может быть, он может работать с UTF8, но тогда у вас неправильные значения (и неправильный код назначения) – deviantfan
Это может иметь какое-то отношение к нормальным символам, которые являются только одним байтом почти на всех платформах, поэтому символ '' \ x15b'' не могут быть представлены в строке. –
Получает ли '' \ u015b '' желаемые результаты? – Wintermute