1

Visual C++/Windows API でアプリケーションを仕上げており、MySql C コネクタを使用しています。

アプリケーション コード全体が ANSI を使用しており、MySql C コネクタも ANSI です。

このプログラムは、Windows XP/Vista/7 または 8 を搭載したポーランド語およびドイツ語のコンピューターで使用されます。

ドイツ語のウムラウトと洗練されたアクセント文字を正しく表示したい:

  • DialogBox コントロール (文字列は言語ファイルから読み込まれます)
  • 生成された XHTML ドキュメント
  • コントロールおよび XHTML ドキュメントに表示される MySql データベースから取得された文字列

MultiByteToWideChar や Unicode 関数 (MessageBoxW など) については聞いたことがありますが、アプリケーション コードはほぼ完成しており、変換は大変な作業です...

最小限の労力と時間で文字エンコーディングを正しく行うには?

非Unicodeプログラムのシステムコードページを変更する可能性がありますか?

4

1 に答える 1

2

まず、もちろん、MySQL が返すコード セットは何ですか? あるいは、データベースにデータを書き込むときにどのコード セットが使用されたのでしょうか。

それ以外では、ワイド文字またはマルチバイト文字の使用を避けることはできないと思います。シングルバイト文字の場合、ドイツ語は ISO 8859-1 (コード ページ 1252) または ISO 8859-15、ポーランド語は ISO 8859 を使用します。 -2 (コード ページ 1250)。しかし、独自のコードで文字を使って何をしていますか? 多くの変更をしなくても、UTF-8 (コード ページ 65001) を使用できる場合があります。本当の問題は、文字が元々どこから来たのかということです (ただし、ソースですぐに文字を UTF-8 に変換することはそれほど難しくないかもしれません)。Windows が入力用のコード ページを尊重しているとは思いません。

それを知っていてもあまり役に立ちませんが、ほとんど不可能な問題に対処していることになります。なぜなら、表示フォントのエンコーディングやキーボード ドライバなど、プログラムの外部に大きく依存しているからです。実際、プログラムが画面にあるものを表示し、プリンターに出力するときに別のものを表示したり、画面にあるものを表示したりすることは珍しくありませんが、データがファイルに書き込まれ、別のもので読み取られる場合は別のものです。プログラム。状況は改善されつつあります — 最近の Unix とインターネットは徐々に (非常に徐々に) UTF-8 で標準化されており、あらゆる場所であらゆるものに対して標準化されており、Windows は通常、純粋な Windows であるすべてのものに対して UTF-16 を使用します (ただし、Windows では UTF-8 をサポートする必要があります)。インターネット)。しかし、プラットフォーム標準を使用しても'

于 2013-05-12T18:09:40.197 に答える