2011-01-27 6 views
0

私は単位ラベルの束を印刷しようとしています。それらのうちのいくつかはギリシャ文字を含み、いくつかは他の面白いコードポイントを有する。wctombの1シンボルあたりのチョーク

私はそれをトレースして、wctombの機能をどのように扱うかわからないようにしました。 UTF-16文字の8240:私は、例えばするwctombが使用するロケールを設定するにはどうすればよい

char mb[10]; 
assert(0 <= wctomb(mb,8240)); 

「すべてのユニコード文字」?

私が必要とする文字から始めて、適切なロケール名を見つける方法はありますか?

+0

はあなたが内部的にUTF-16を使用するWindowsを使用しているようだ参照してください。したがって、すでにいくつかのUTF-16文字列がある場合、それを別のものに変換する必要はありません。 – Philipp

答えて

2

正しいUTF-8ロケールを設定すると修正されます。

#include <assert.h> 
#include <stdio.h> 
#include <stdlib.h> 
#include <locale.h> 

int main() 
{ 
    setlocale(LC_ALL, "en_US.UTF-8"); 
    char mb[10]; 
    assert(0 <= wctomb(mb,8240)); 
    printf("%s\n", mb); 
    return 0; 
} 

http://ideone.com/sflZj

+0

私は考えが好きです。しかし、まだwctombは-1を返す... – xtofl

+0

@xtofl私の更新されたリンクをチェックする、gccで動作する。 – ismail

+0

ああ... setlocaleはnullを返します。 – xtofl

関連する問題