C++ 中的希伯来字符 (cout<<char<<char;)
Hebrew chars in C++ (cout<<char<<char;)
我正在尝试在 C++ 中使用希伯来语字符,在 mac.
上使用 Clion
char notification[140]={"א"}; //this is ALEF the first letter of Hebrew ABC.
for(int i=0; i < strlen(notification); i++) {
cout << (int)notification[i] << endl;
} //Here I want to see what is the ASCII code for this letter.
此 for 的输出是:
-41
-112
虽然只输入了1个字符。
cout << char(-41) << char(-112) << endl; // this one gives me the output of the letter ALEF
cout << char(-41) << char(-111) << endl; //gives the second letter of Hebrew ABC.
我不明白它是如何工作的,为什么有 2 个字符显示 1 个希伯来字符?
您看到“א”的 UTF8 代码。但显然您的终端不支持此字符集或 UTF8。
(-41,-112) = (0xd7, 0x90)
Look here for UTF8 hebrew characters
您需要了解如何配置终端以支持希伯来语字符集和 UTF8。
maybe this can help
这里有几个子问题。
a)
您需要某种 Unicode 格式的数据,而不是基于 ASCII 的单字节字符。你已经有了,但如果没有,世界上没有任何编程语言特性会自动为你做这件事。
b)
因为你有 UTF8,根据你在做什么,std::string
等可以很好地处理数据。
例如。
- 输入输出from/to个文件正常
- 获取使用的字节长度即可
- (input/output到终端取决于使用的终端)
...
什么是一个问题,例如。
- 计算有多少字符(不是字节)
- 使用
varname[number]
访问单个字符
- Unicode 规范化之类的东西
...对于此类事情,您将需要更多编码 and/or 外部库,例如 ICU。
c)
如果您想直接向终端打印此类信息(或读取用户的输入),您的终端需要支持 UTF8。这完全取决于使用的 OS 及其配置,C++ 部分在这里无能为力。见例如。 OS X Terminal UTF-8 issues
我正在尝试在 C++ 中使用希伯来语字符,在 mac.
上使用 Clionchar notification[140]={"א"}; //this is ALEF the first letter of Hebrew ABC.
for(int i=0; i < strlen(notification); i++) {
cout << (int)notification[i] << endl;
} //Here I want to see what is the ASCII code for this letter.
此 for 的输出是:
-41
-112
虽然只输入了1个字符。
cout << char(-41) << char(-112) << endl; // this one gives me the output of the letter ALEF
cout << char(-41) << char(-111) << endl; //gives the second letter of Hebrew ABC.
我不明白它是如何工作的,为什么有 2 个字符显示 1 个希伯来字符?
您看到“א”的 UTF8 代码。但显然您的终端不支持此字符集或 UTF8。 (-41,-112) = (0xd7, 0x90)
Look here for UTF8 hebrew characters
您需要了解如何配置终端以支持希伯来语字符集和 UTF8。
maybe this can help
这里有几个子问题。
a)
您需要某种 Unicode 格式的数据,而不是基于 ASCII 的单字节字符。你已经有了,但如果没有,世界上没有任何编程语言特性会自动为你做这件事。
b)
因为你有 UTF8,根据你在做什么,std::string
等可以很好地处理数据。
例如。
- 输入输出from/to个文件正常
- 获取使用的字节长度即可
- (input/output到终端取决于使用的终端)
...
什么是一个问题,例如。
- 计算有多少字符(不是字节)
- 使用
varname[number]
访问单个字符
- Unicode 规范化之类的东西
...对于此类事情,您将需要更多编码 and/or 外部库,例如 ICU。
c)
如果您想直接向终端打印此类信息(或读取用户的输入),您的终端需要支持 UTF8。这完全取决于使用的 OS 及其配置,C++ 部分在这里无能为力。见例如。 OS X Terminal UTF-8 issues