質問

ユニコードまたはマルチバイト文字セットを使用して、プロジェクト(主にC ++をここで考えている)を作成することに関して、スタックオーバーフローコミュニティがどう思うか疑問に思っています。

  • 最初からまっすぐUnicodeに進むプロは、すべての文字列が広い形式であることを暗示していますか?より大きな文字の標準的な使用のため、パフォーマンスの問題 /より大きなメモリ要件はありますか?

  • この方法に利点はありますか?一部のプロセッサアーキテクチャは、幅広い文字をよりよく処理しますか?

  • 追加の言語をサポートする予定がない場合、プロジェクトをユニコードにする理由はありますか?

  • マルチバイト文字セットを使用してプロジェクトを作成するために、どのような理由がありますか?

  • 上記のすべての要因は、高性能環境(最新のビデオゲームなど)でどのように衝突しますか?

役に立ちましたか?

解決

コメントする2つの問題。

まず、どのプラットフォームをターゲットにしているかについては言及していません。最近のWindowsバージョン(Win2000、Winxp、Vista、およびWin7)は、文字列を使用してシステムコールのマルチバイトバージョンとUnicodeバージョンの両方をサポートしていますが、Unicodeバージョンはより高速です(MultibyteバージョンはUnicodeに変換するラッパーであり、Unicodeバージョンを呼び出してから返されます弦楽器に戻る弦)。したがって、これらの種類の呼び出しをたくさん行っている場合、Unicodeはより速くなります。

追加の言語を明示的にサポートすることを計画していないからといって、アプリケーションが保存してユーザーが入力したテキストを表示する場合は、Unicodeのサポートを検討する必要があります。あなたのアプリケーションが単独であるからといって、それがすべてのユーザーもユニリングルになるということではありません。彼らはあなたの英語GUIを使用することを完全に喜んでいるかもしれませんが、自分の言語で名前、コメント、またはその他のテキストを入力し、それらを適切に表示したいかもしれません。

他のヒント

ここでVC ++プロジェクトの設定について話していますよね?

影響する唯一のものは、Win32 API呼び出しのバージョンが終了することです。たとえば、呼び出し MessageBox 呼び出しになります MessageBoxA マルチバイト設定の場合、および MessageBoxW ユニコード設定の場合。もちろん、それはその関数の文字列パラメーターのタイプにも影響します。初めの、 MessageBoxA 電話 MessageBoxW 現在のシステムロケールからユニコードに文字列パラメーターを変換した後。

私のアドバイスは、Unicode設定を使用し、Unicode文字列を渡して32 API呼び出しをwinすることです。それは、内部的に他のエンコードで文字列を使用することを妨げるものではありません。

短い答え(IMO、そして私は間違っていることを証明してきました)は、より悪いことを計画して(またはあなたの視点によって依存するのが最良)、そして今Unicodeを実行する方が良いということです。

アプリケーションが非常に集中的でない限り、Unicodeに直接移動することは実際には重要ではありません。ゲームの場合、エンジンの他の部分と比較して大きな要因ではないはずです。

マックス。

簡単な考慮事項は次のとおりです。プログラムは、氏が使用している場合は機能する必要がありますか?彼のホームディレクトリは、ASCIIで表現するのが難しいかもしれません。

最初からまっすぐにユニコードに行くプロはありますか、

数年後、100万行のコードが後で、「はい」と答えてほしいと思います。

すべての文字列が幅広い形式であることを暗示していますか?

Microsoftが「Unicode」とUTF-16の合流をやめたいと思います。

すべての文字列を広い形式で保存する必要はありません。代わりにUTF-8を使用して、より小さなメモリフットプリント(ラテン語のアルファベット言語の場合)を取得し、7ビットASCIIとの逆方向の互換性を取得できます。

WindowsでUTF-8を使用することの1つの欠点は、ANSIコードページとしてサポートされていないため、WinAPIコールを行うには文字列をUTF-16に変換する必要があることです。これがどれほど不便を引き起こすかは、Windowsプログラムを書いているのか、たまたまWindowsで実行されているプログラムを書いているかによって異なります。

その質問に対する最初の答え ...あなたが知る必要があるすべてに答えるべきです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top