LINUX.ORG.RU

gcc, eclipse, консоль, русский, UTF, кодировка


0

1
#include <stdio.h>
#include <iostream>
#include <locale>

int main()
{
	const wchar_t *str = L"\u041F\u043E\u0440\u044F\u0434\u043E\u043A";
	std::locale::global(std::locale(""));
	std::wcout << str << std::endl;
}

Вот что выводит эклипса: РџРѕСЂСЏРґРѕРє

Вот терминал: pro@pro:$ ./a.out Порядок

Если без locale то выводит и в эклипсе и в терминале ???????.

В реальном приложении эта строка выводится вообще как 45=B8D8:0B>@

Вопрос: подскажите, это я тупой или гвозди? Где копать? Что им всем надо?

В общем, как правильно настроить - gcc, eclipse, терминал... исходники... чтобы русские буквы выводились везде?

И ещё, eclipse строку вышеуказанную показывает как

Details:0x400960 L"\320\237\320\276\321\200\321\217\320\264\320\276\320\272"

для переменной, и бороду в memory view - там только три кодировки (ISO-8859-1, US-ASCII, UTF-8). Как сделать чтобы эклипс понимал нужную кодировку (т.к. чтобы UTF-32 показывал)? Там в меню есть в Preferences выбор кодировки для строк ascii/ebcdic но она ни на что не влияет.

В терминале

★★★★★
Ответ на: комментарий от r2d2

Как?

И как это поможет эклипсу показывать правильно?

queen3 ★★★★★
() автор топика
Ответ на: комментарий от r2d2

Уточню вопрос: gettext поможет мне выводить utf32? Мне локализовать приложение не надо, мне данные приходят в бинарной форме из базы.

queen3 ★★★★★
() автор топика
Ответ на: комментарий от r2d2

Да-да, что на выходе - это и есть мой вопрос.

У меня нет проблемы сконвертировать строку во что-то. У меня проблема - понять во что, и зачем вообще это должен делать я, а не библиотека вывода, которая знает про системную локаль и прочая.

queen3 ★★★★★
() автор топика
Ответ на: комментарий от queen3

http://i27.fastpic.ru/big/2011/1222/27/d347892b3d2750e14ab2717a55122727.png

УМВР.

# dpkg -l *eclipse* | grep ^ii
ii  eclipse-cdt                          8.0.1-1                           C/C++ Development Tools for Eclipse
ii  eclipse-cdt-jni                      8.0.1-1                           C/C++ Development Tools for Eclipse (JNI)
ii  eclipse-emf                          2.5.0-1                           Eclipse Modeling Framework (EMF)
ii  eclipse-jdt                          3.7.0-1                           Eclipse Java Development Tools (JDT)
ii  eclipse-pde                          3.7.0-1                           Eclipse Plug-in Development Environment (PDE)
ii  eclipse-platform                     3.7.0-1                           Eclipse platform without plug-ins to develop any language
ii  eclipse-platform-data                3.7.0-1                           Eclipse platform without plug-ins to develop any language (data)
ii  eclipse-rcp                          3.7.0-1                           Eclipse Rich Client Platform (RCP)
ii  eclipse-rse                          3.1.2-1                           Eclipse Remote System Explorer (RSE)
r2d2
()
Ответ на: комментарий от r2d2

Спасибо, теперь я знаю, что проблема решаема. Осталось только найти способ решения.

queen3 ★★★★★
() автор топика

L"\u041F\u043E\u0440\u044F\u0434\u043E\u043A";

А просто набрать строку на русском как есть не пробовал? Без L"" ? В этом случае (если системная локаль UTF-8) все должно работать (но не под оффтопиком :) )

Harald ★★★★★
()
Ответ на: комментарий от Harald

хотя сейчас я пересмотрел код, кажется ступил :)

Harald ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.