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