2016-04-13 8 views
3

LinuxボックスでUTF-16またはその任意の形式をロケールとして設定できません。UTF-16をロケールとして設定できません

#include <iostream> 
#include <string.h> 
#include <locale.h> 

using namespace std; 

int main() 
{ 
    char *ret = std::setlocale(LC_ALL, "en_US.utf16"); 
    if (ret) { 
     cout << ret << endl; 
    } 
    return 0; 
} 

出力にはロケールセットが印刷されないため、目的のロケールが設定されていません。

ボックスのサポートされているロケールのリストには、UTF-16エンコーディングの形式は含まれていません。私はlocale -a

$ uname -a 
Linux developer.com 2.6.32-279.1.1.el6.x86_64 #1 SMP Tue Jul 10 11:24:23 CDT 2012 x86_64 x86_64 x86_64 GNU/Linux 

を経由して、これをチェックする何かがボックスにUTF-16を使用するためにインストールする必要がありますか?

答えて

5

UTF-16はASCII互換ではないため、LinuxではロケールとしてUTF-16を設定することはできません。 Cの文字列はNULLで終了し、UTF-16には組み込まれたnul文字が含まれている可能性があります。あなたはUTF-8に固執する必要があります。

/etc/locale.genをご覧になり、このファイルを編集してから、コマンドlocale-genを実行して新しく挿入されたロケールを生成してください。しかし、ここでもUTF-16を生成することはできません!

関連する問題