このテスト プログラムは、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 のマニュアルによると、それは入力文字セットを変更するだけですが、試してみる価値はありました。)
それで、私は何を間違っていますか?