2
printf("%s\n", multibytestring);

デフォルトでは、マルチバイト文字は???コンソールのように表示されますが、どうすれば修正できますか?

4

3 に答える 3

0

これを試して:

wprintf("%s\n", multibytestring);
于 2010-10-05T05:10:11.277 に答える
0

ワイド文字列には「%ls」が必要です。それはあなたが求めているものですか?

より完全な答えは次のとおりです。

  • wprintfを使用すると、デフォルトで「%s」を使用して16ビット文字列を出力できます。
  • 「%ls」または「%hs」を使用して、printfバリアントに関係なく、個々の引数の文字/文字列幅を明示的に指定できます。
  • MSのリファレンスドキュメントについては、 http ://msdn.microsoft.com/en-us/library/56e442dc.aspxを参照してください。

UTF8文字が正しく表示されないことについて質問している場合は、おそらくプラットフォーム固有です(コンソールのコードページ/処理によって異なります)。UTF8をASCIIとして出力できるはずですが、ディスプレイはUTF8を正しく処理できる必要があり、適切なコードページまたはその他の環境設定を設定する必要がある場合があります(これについてはよくわかりません。アプリ/プラットフォーム固有だと思います) )。

于 2010-10-05T05:10:25.847 に答える
0

私はWindowsを推測しています。つまり、ワイド文字ではなくマルチバイト文字を意味します。

_MBCS それが定義されていることを確認してください。電話setlocaleしてみてください_setmbcp

setlocale(LC_ALL, "japanese");
_setmbcp(_MB_CP_LOCALE);

その後、うまくいけばうまくいくはずです。

于 2010-10-05T06:21:25.567 に答える