2016-08-08 6 views
1

Вот очень простой C++ код:Netbeans C не ++ печать UTF-8 символов

char a00 = 'Z'; 
char a01 = '\u0444'; 
char a02[5] = {'H','e','l','l','o'}; 
char a03[] = {'W','o','r','l','d','\0','Z','Z'}; 

cout << "Simple char: " << a00 
     << "\nUTF-8 char: " << a01 
     << "\nFull char array: " << a02 
     << "\n2nd in char array: " << a02[1] 
     << "\nWith null character: " << a03 << endl; 

Моя проблема когда Netbeans 8.1 пытается показать выход такой программы, она не создает UTF-8 персонаж.

Персонаж должен выглядеть следующим образом: ф (см: link)

Вместо этого я получаю следующий результат:

(image)

Я попытался добавить -J-Dfile.encoding=UTF-8 к netbeans_default-options внутри файла netbeans.conf расположенного внутри папки etc. Это не имело значения.

+1

Очень немногие 'UTF-8' символы помещаются в одной' char'. Большинству требуется два или три байта. Попробуйте поместить его в строку: 'std :: string s =" \ u0444 ";' – Galik

+0

@Galik Yep, которая решила мою проблему отлично. Если вы создадите ответ, я смогу принять его и закрыть этот вопрос. Спасибо :) –

ответ

1

UTF-8многобайтовая кодировка, что означает, что большинство символов занимают несколько байтов. Поэтому одного char недостаточно, чтобы содержать большинство UTF-8 персонажей.

Вы можете хранить их в строку, как это:

std::string s = "\u0444";