1

我在 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 手册,这只改变了输入字符集,但是,嘿,值得一试。)

那么,我做错了什么?

4

0 回答 0