2015-01-15 3 views
1

Я делаю приложение 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, но файлы заголовков нигде не найдены в системе.

+0

Если до сих пор все черновые строки были напечатаны правильно, это не переключится на UTF16/32 только потому, что вы так думаете. Может быть, он может работать с UTF8, но тогда у вас неправильные значения (и неправильный код назначения) – deviantfan

+0

Это может иметь какое-то отношение к нормальным символам, которые являются только одним байтом почти на всех платформах, поэтому символ '' \ x15b'' не могут быть представлены в строке. –

+0

Получает ли '' \ u015b '' желаемые результаты? – Wintermute

ответ

1

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

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

c59b является "S" (0x15B) на UTF-8.

+0

Прогнозирование: C59A - 0x15A. – deviantfan