C++ 将特殊的 ascii 字符打印到 Windows 控制台
C++ Printing special ascii characters to the Windows console
经过 2 小时的搜索和尝试各种方法后,我正在努力尝试将特殊的 ascii 字符打印到控制台! (C++)
typedef unsigned char UCHAR;
int main()
{
UCHAR c = '¥';
cout << c;
return 0;
}
为什么这段代码打印的是 Ñ (209) 而不是 ¥ (165)???
我试过:
SetConsoleCP(CP_UTF8);
SetConsoleOutputCP(CP_UTF8);
但无论我传递给它什么值,它们似乎都没有做任何事情。
有人建议需要通过注册表更改控制台的字体。但这是荒谬的。我不希望我的最终用户必须开始将注册表值简单地更改为 运行 我的程序...
真正奇怪的是,如果我将所有 ascii 字符打印到一个文件中(使用 ofstream),它们会在记事本和 visual studio 编辑器(2012 专业版)中正确显示。
ofstream file("ASCII.txt");;
if (file.is_open())
{
UCHAR c = 0;
for (int i = 0; i < 256; i++)
{
c++;
file << c << "\t|\t" << (int)c << endl;
}
}
file.close();
非常感谢任何帮助。
谢谢!
欢迎来到编码的痛苦:(
#include <iostream>
#include <windows>
int main() {
SetConsoleCP(437);
SetConsoleOutputCP(437);
std::cout << (char)157 << "\n";
}
生成:
问题是您的源文件在 CP437 中 不是 ,因此该字符的值与您尝试打印的不同(正如您在源文件中指出的那样)值是 165,这是 CP437 中的不同字符)。
经过 2 小时的搜索和尝试各种方法后,我正在努力尝试将特殊的 ascii 字符打印到控制台! (C++)
typedef unsigned char UCHAR;
int main()
{
UCHAR c = '¥';
cout << c;
return 0;
}
为什么这段代码打印的是 Ñ (209) 而不是 ¥ (165)???
我试过:
SetConsoleCP(CP_UTF8);
SetConsoleOutputCP(CP_UTF8);
但无论我传递给它什么值,它们似乎都没有做任何事情。
有人建议需要通过注册表更改控制台的字体。但这是荒谬的。我不希望我的最终用户必须开始将注册表值简单地更改为 运行 我的程序...
真正奇怪的是,如果我将所有 ascii 字符打印到一个文件中(使用 ofstream),它们会在记事本和 visual studio 编辑器(2012 专业版)中正确显示。
ofstream file("ASCII.txt");;
if (file.is_open())
{
UCHAR c = 0;
for (int i = 0; i < 256; i++)
{
c++;
file << c << "\t|\t" << (int)c << endl;
}
}
file.close();
非常感谢任何帮助。 谢谢!
欢迎来到编码的痛苦:(
#include <iostream>
#include <windows>
int main() {
SetConsoleCP(437);
SetConsoleOutputCP(437);
std::cout << (char)157 << "\n";
}
生成:
问题是您的源文件在 CP437 中 不是 ,因此该字符的值与您尝试打印的不同(正如您在源文件中指出的那样)值是 165,这是 CP437 中的不同字符)。