我在 Latin-1 编码文件中编写了这个测试程序......
#include <cstring>
#include <iostream>
using namespace std;
const char str[] = "ÅÄÖ";
int main() {
cout << sizeof(str) << ' ' << strlen(str) << ' '
<< sizeof("Åäö") << ' ' << strlen("åäö") << endl;
return 0;
}
...并g++ -fexec-charset=UTF-8 -pedantic -Wall
在 OpenBSD 5.3 上编译它。我期待看到字符串的大小为 6 个字符 + 1 个 NUL 字符,但我得到了输出4 3 4 3
?
我尝试使用 将系统区域设置从 ISO-8859-1 更改为 UTF-8 export LC_CTYPE=sv_SE.UTF-8
,但这没有帮助。(根据 gcc 手册,这只改变了输入字符集,但是,嘿,值得一试。)
那么,我做错了什么?