Próbuję wydrukować chiński znak 中
wykorzystaniem rodzajów wchar_t
, char16_t
i char32_t
, bez powodzenia (live example)Próbuję wydrukować chińską literę przy użyciu typów wchar_t, char16_t i char32_t, bezskutecznie.
#include <iostream>
int main()
{
char x[] = "中"; // Chinese character with unicode point U+4E2D
char y[] = u8"中";
wchar_t z = L'中';
char16_t b = u'\u4e2d';
char32_t a = U'\U00004e2d';
std::cout << x << '\n'; // Ok
std::cout << y << '\n'; // Ok
std::wcout << z << '\n'; // ??
std::cout << a << '\n'; // prints the decimal number (20013) corresponding to the unicode point U+4E2D
std::cout << b << '\n'; // " " "
}
std :: wcout nie działa, jeśli starają się pisać teksty, które nie mogą być reprezentowane w domyślnej lokalizacji. – WorldSEnder
C++ nie ma obsługiwanej obsługi standardu Unicode. Jeśli potrzebujesz (nie trywialnej) obsługi Unicode, użyj dedykowanej biblioteki takiej jak [ICU] (http://site.icu-project.org/). (Tak, możesz zrobić coś z 'std :: string' na systemach innych niż Windows i' wstring' na Windowsie, ale meh). –
@BaummitAugen Wydaje się pracować z UTF-8 –