bati22 Temat założony przez niniejszego użytkownika |
Kodowanie chińskich znaków » 2016-08-15 17:07:07 Witam! Chcę stworzyć program, który będzie wyświetlać jedno japońskie słowo - 漢字. #include <string> #include <iostream> using namespace std;
int main() { string Kanji = "漢字"; cout << Kanji << endl; return 0; }
Konsola nie wyświetla mojego wyrazu. Co muszę zrobić, aby konsola wyświetliła chińskie znaki? |
|
Gibas11 |
» 2016-08-15 18:14:36 1. Zwykły string sobie z tym nie poradzi, użyj wstring. 2. Na Linuksie działa od ręki, na windzie musisz ustawić odpowiednie kodowanie znaków. |
|
bati22 Temat założony przez niniejszego użytkownika |
» 2016-08-15 19:00:59 @Gibas11 Ok, dzięki za pomoc, jednak w jaki sposób ustawić odpowiednie kodowanie znaków? Muszę zmienić kodowanie konsoli na obsługujące chińskie znaki i do tego kodowania dostosować kodowanie pliku z kodem? Dlaczego używając wstring nie mogę skompilować kodu? #include <string> #include <iostream> using namespace std;
int main() { wstring Kanji = "漢字"; cout << Kanji << endl; return 0; }
|
|
carlosmay |
» 2016-08-15 19:20:22 Dlaczego używając wstring nie mogę skompilować kodu? |
Dla strumieni trzeba ustawić odpowiednią stronę kodową, a jak to już zależy od środowiska. wstring Kanji = L"漢字"; wcout << Kanji; |
|
j23 |
» 2016-08-15 19:28:48 @ bati22, w windowsie do zmiany kodowania (wyjścia) konsoli masz funkcję SetConsoleOutputCP. Problem w tym, że kodowanie 932, bo takie jest dla japońskich znaków, nie chce zaskoczyć. Z tego co wyczytałem, trzeba przełączyć locale całego systemu na japońskie. Możesz sprawdzić ten kod: if( SetConsoleOutputCP( 932 ) ) { setlocale( LC_CTYPE, ".932" ); std::wstring Kanji = L"漢字"; std::wcout << Kanji << L'\n'; } |
|
bati22 Temat założony przez niniejszego użytkownika |
» 2016-08-15 19:40:43 @carlosmay Ok, dzięki. Niestety i tak nie da się go skompilować. To coś z Code::Blocks'em? @j23 Dzięki za kod, sprawdzę go jak tylko ogarnę czemu nie chce mi się to skompilować. Jeżeli trzeba przełączyć locale całego systemu na japońskie to trochę słabo :( #include <string> #include <iostream> using namespace std;
int main() { wstring Kanji = "漢字"; wcout << Kanji << endl; return 0; }
|
|
j23 |
» 2016-08-15 19:41:46 @bati22, podaj błędy kompilacji. |
|
bati22 Temat założony przez niniejszego użytkownika |
» 2016-08-15 19:44:06 D:\Prace i projekty\9rodzial.cpp||In function 'int main()':| D:\Prace i projekty\9rodzial.cpp|7|error: conversion from 'const char [7]' to non-scalar type 'std::wstring {aka std::basic_string<wchar_t>}' requested| D:\Prace i projekty\9rodzial.cpp|8|error: 'SetConsoleOutputCP' was not declared in this scope|
|
|
« 1 » 2 |