Unicode文字をサポートするために既存のコードを変換しようとしているときに、この問題が発生しました。ユニコード文字(この場合はユーロ記号を使用しています)を* wprintf関数のいずれかに渡そうとすると失敗しますが、一見xcodeだけになります。ビジュアルスタジオでも同じコードがうまく動作し、linuxでgccを使って正常にテストするための友人を手に入れることさえできました。ここで問題のあるコードです:Visual Studioで、それは成功し、3つの文字(65、165のそれぞれについて、正しい値をプリントアウトして進める一方で、swprintfはxcodeのUnicode文字で失敗しますが、Visual Studioで動作します
wchar_t _teststring[10] = L"";
int _iRetVal = swprintf(_teststring, 10, L"A¥€");
wprintf(L"return: %d\n", _iRetVal);
// print values stored in string to check if anything got corrupted
for (int i=0; i<wcslen(_teststring); ++i) {
wprintf(L"%d: (%d)\n", i, _teststring[i]);
}
Xcodeでswprintfへの呼び出しは-1を返します、 8364)。 、私がいない成功を収めて、この機能を引数の様々な組み合わせを試してみました
setlocale(LC_CTYPE, "UTF-8");
:回数を登場している
私は長いとソリューションのためのハードGoogleで検索している、1つの提案は、次のような呼び出しを使用していますさらに調査すると、デフォルトの "C"以外の値にロケールを設定しようとするとnullが返されるようです。
私はこの問題を解決するために他に何ができるかについて迷っています。他のコンパイラ/プラットフォームでもうまく動作しているだけに、もっとイライラします。どんな助けでも大歓迎です!
EDIT:あなたは、環境からロケールを取得する場合、それが動作するはず
#define EILSEQ 92 /* Illegal byte sequence */
ソースコードを7ビットのasciiにしておき、それが役立つかどうか確認してください。 '' \ u03b2 "'を文字列に書きます。 – bobbogo
喜びはありませんが、同じように失敗します。私は "A¥"で文字列を初期化して、それらがすべて正しいと読んだら、ユニコード文字で文字列を作成することは問題ではないと思います。 – Argh