C++ Visual Studio Unicode confusion
C++ Visual Studio Unicode confusion
我一直在看Unicode图表,知道前127个码位对于几乎所有编码方案都是等价的,ASCII(可能是原始的),UCS-2,ANSI,UTF-8,UTF-16,UTF-32和其他任何东西。
我写了一个循环来遍历从十进制 122 开始的字符,即小写的"z"。 之后还有几个字符,例如 {、|和 }。 之后,它进入了基本上是大约 20 个"控制字符"的无人区,然后字符再次从 161 开始,带有一个倒置的感叹号,162 是带有笔画的美分符号,依此类推。
问题是,我的结果与Unicode图表,UTF-8或UCS-2图表不符,符号似乎是随机的。 顺便说一下,我将"字符变量"设置为四字节整数的原因是,当我使用"char"(本质上是一个单字节有符号的数据类型,在 127 之后它循环回 -128,我认为这可能会搞砸它。
我知道我做错了什么,谁能弄清楚发生了什么? 无论我在项目设置中将字符集设置为 Unicode 还是多字节字符,都会发生这种情况。 下面是您可以运行的代码。
#include <iostream>
using namespace std;
int main()
{
unsigned int character = 122; // Starting at "z"
for (int i = 0; i < 100; i++)
{
cout << (char)character << endl;
cout << "decimal code point = " << (int)character << endl;
cout << "size of character = " << sizeof(character) << endl;
character++;
system("pause");
cout << endl;
}
return 0;
}
顺便说一下,这是 Unicode 图表
http://unicode-table.com/en/#control-character
您打印的字节很可能是使用控制台代码页(有时称为 OEM)显示的,该代码页可能与 Windows 应用程序使用的本地单字节或双字节字符集(称为 ANSI)不同。
例如,在我的英语Windows上,安装ANSI意味着windows-1252,而控制台默认使用代码页850。
有几种方法可以将任意 Unicode 字符写入控制台,请参阅如何在 Windows 控制台上输出 Unicode 字符串
相关文章:
- C++ - Unicode Newline
- Confusion: decltype vs std::function
- 如何将unicode字符串从C++传递到delphi
- ascii 和 unicode 在处理级别有什么区别吗?
- 无法从 std::string 中提取C++ Unicode 符号
- MinGW64 - Unicode 源文件错误?
- 使用 Visual Studio 2019 编译 Unicode
- 将ANSI C字符串转换为UNICODE
- 如何从 oracle 数据库 c++ 读取 unicode
- 在特定 Unicode 路径中创建文件
- 如何存储 unicode 字符并将其输出到文件?
- C++ wmain 函数错误时使用 Unicode
- C++:打印 Unicode 字符
- QTextStream,用于打印英语和Unicode 16
- 将 unicode 字符串与 c ++ 符号进行比较?
- 如何在C++中使用 UTF-8 和 Unicode?C++20 char8_t有多大?
- 在 CHtmlEditCtrl::SetDocumentHTML 中使用 Unicode
- C++ - 为什么 unicode 输出不正确?
- 如何在 c++ 中读取用 utf-8 编码的 java unicode 字节字符串
- C++ Visual Studio Unicode confusion