Unicode 无法正确输出 (Windows 10)
Unicode doesn't output correctly (Windows 10)
我是一名初级程序员,正在开发一款简单的游戏。我想输出Unicode符号,如Alt+219 我在控制台上看到的是一些奇怪的符号。即使使用其他Unicode字符也会发生这种情况,但符号不同。 我尝试使用 我也尝试过这样的东西: 但后来我得到了 Unicode符号对我的游戏来说并不是完全必要的,但我只想让它看起来更好。#include <iostream>
using namespace std;
int main()
{
cout << "u2588";
return 0;
}
wcout
,但后来我得到的只是一个空格。_setmode(_fileno(stdout), _O_U16TEXT);
_fileno
和_O_U16TEXT
没有声明的错误,尽管我导入了似乎是必要的库:#include <iostream>
#include <io.h>
#include <fcntl.h>
#include <fstream>
Windows命令提示符默认使用CP850作为编码,除非您更改它,否则将无法正确显示此符号或任何Unicode符号。
然而,它有自己的版本,xDB
,这可能就是你想要的。
对于可以在Windows命令提示符中使用的其他符号,打开charmap.exe
并检查字体Terminal
,有一系列有用的符号应该与CP850兼容,并在命令提示符下以相同的方式显示。
这是因为您正尝试使用仅支持char
(8位长)的std::cout
打印wchar_t
(16位长)字符。使用std::wcout
而不是std::cout
,wcout
用于宽字符。
其他答案已经解决了将字符串视为UTF-16文字的问题。您还可以告诉编译器将其视为utf-8文字(强制它将其中的所有字符编码为utf-8),方法是在其前面加上u8
:
#include <iostream>
using namespace std;
int main()
{
cout << u8"u2588";
return 0;
}
请注意,默认情况下,windows控制台不会将输出设置为utf-8,因此如果没有一些额外的设置,它仍然无法正确显示。
- 在Windows中查找扬声器输出的当前音量级别
- 在Linux和C++中的Windows上,散列字符串值会产生不同的输出
- 如何从Windows应用程序输出到标准?
- 如何在"SUBSYSTEM:WINDOWS"下显示并输出到Windows(C++ WinApi)上的
- C++输出奇怪的字符而不是数字 (Windows)
- 将控制台应用程序直接输出到Visual Studio而不是外部Windows控制台中
- Windows 10命令提示符的输出不正确
- 如何在 Windows 10 中使用 C++ 输出低 ASCII?
- 在linux上使用g++输出错误,在windows上更正
- 如何读取windows服务启动的控制台应用程序的输出
- Windows 文件系统 API 不同的输出
- 如何使用C++在Windows中输出和输入UTF8或UTF16 Unicode文本?
- Windows 中应用程序的每秒输入/输出操作数
- 在 Windows 命令行中运行.exe在使用 2 种相同方式执行时会产生不同的输出
- 在 windows.h 的WM_PAINT中启用输出缓冲
- C++使用 shell 命令 WINDOWS 的输出定义宏 /D
- 读取 USB 相机的输入编辑并将输出发送到 Windows 上的虚拟相机
- Unicode 输出未显示在 Windows 控制台中
- SDL2 Windows上没有控制台输出
- 标准输出输出不会显示在基于 Windows MFC 对话框的应用的控制台上