2011-07-19 11 views
3

がUnicodeを切り替えるのいずれかの直接の結果は、MBCSあります、と離れ_ UNICODEの設定から、を設定VS C++コンパイラの設定の構成プロパティ - >一般 - >文字のを設定していません、_ MBCSおよび_ Tマクロ(文字列関数の一般的なテキストマッピングによって間接的に影響を受けます)VS C++文字セットコンパイラ設定は文字エンコーディングに影響しますか?

私はそれが期待していないのですが、ドキュメントは「指定された文字セットを使用するようにコンパイラーに指示します」と言うから、私は具体的には、どんな影響力を持っていない、と確信になりたいです文字列やwstringsに埋め込まれたリテラルな非ASCIIテキストがどのようにコード化されているか? (私は、ソースの非ASCIIリテラルは移植性がないことを認識していますが、これが大量に使用されているソリューションを維持しています)。

ありがとうございます。

答えて

3

いいえ、マクロ定義にのみ影響します。 <tchar.h>またはWindowsのT文字列ポインタ型(LPTSTRなど)から広範囲にわたる影響を与えることができます。

文字列リテラルで非ASCIIコードを使用する場合は、コンパイラがソースコードファイル内のテキストをデコードする方法に大きく依存します。これが想定するデフォルトのエンコーディングは、コントロールパネルの[地域と言語]オプションで設定されたシステムコードページです。あなたのソースコードファイルがあなたのマシンからあまりにも遠く離れすぎている場合、これはうまく動作しません。 BOMを使用してutf8を指定することは賢明ですので、これは問題ではありません。 [名前を付けて保存]で設定したIDEで、[保存]ボタンの矢印、[エンコードで保存]を選択し、65001を選択します。utf8でエンコードされたソースコードファイルのサポートは、古いバージョンのC++コンパイラでは問題ありません。

2

未完成の文字列の場合、C++はCの後に続きます。これはASCIIです。あなたが何かをラップすると、ゲームが変わります。

C++ 0xは、Unicode文字列を標準化しています。特にUTF。これは新しい機能です。

関連する問題