0

(db に) 保存し、後で非ラテン文字を表示できる WinForms アプリケーションがあります。文字セットに関連するものを知っています。私のデータベースとすべてのテーブルのデフォルトの文字セットは utf8 に設定されています。しかし、これはまだラテン文字以外の文字の奇妙さを保存していません:)。

いくつかのグーグルとSO-ingの後、それが何かについてのものであることがわかりましたSET NAMES 'utf8'。しかし、これをどこに適用すればよいでしょうか。SOに関する多くの同様のスレッドがphpを扱っておりSET NAMES 'utf8'、クエリの開始時に含める必要があると言われています。しかし、私のコードには何百ものクエリがあり、それぞれの場所をいじるのは面倒です。

そのために MySQL を構成する必要がある場合、プログラムで実行できますか? これを接続文字列に設定することで、何らかの解決策があることを願っています。

私はこれを試しました:

conString = "SERVER=localhost;DATABASE=hi;UID=root;PASSWORD=;Min Pool Size=0;Max Pool Size=200;SET NAMES 'utf8'";

接続文字列の形式が正しくないという実行時エラーが発生します。

4

1 に答える 1

0

この答えは言うThe collation is only used for sorting and comparison, not for saving data.

私はこれを試してみましたが、これは美しく機能しました。

conString = "SERVER=localhost;DATABASE=hi;UID=root;PASSWORD=;Min Pool Size=0;Max Pool Size=200;charset=utf8;";

編集:完成させてください。

.NETコネクタのマニュアルによると"CharSet specifies the character set that should be used to encode all queries SENT TO THE SERVER. Resultsets are still returned in the character set of the result data."

つまり:

1.charset=utf8データベースにデータを保存する場合のみ設定が必要で、取得時は.NETコネクタが保存した形式で取得するため、設定は必要ありません。データを読み取るときに、接続文字列を変更して削除する必要があると言っているのではありcharset=utf8ません。それは両方の方法で機能します。明示的に保存するだけで が必要であることを明確にするだけcharset=utf8です。

2、データベースのデフォルトの文字セットがutf8に設定されていることは最優先事項ではありません。接続文字列で文字セットがutf8として定義されている場合は、latin1でも実行できます

上記のケースをテストしました。

于 2012-06-02T13:31:48.983 に答える