2

MySql にヘブライ語の文字列を挿入するのに問題があります。

序章

  1. MySql を Utf8 に設定しました。
  2. テーブルを照合 uft8_general_ci で charset utf8 として設定します
  3. 接続文字列を次のように設定しました: "Server= ;Database= ;Uid= ;Pwd= ; charset=utf8;"
  4. C# で使用するためのストアド プロシージャを記述します。
  5. MySql のバージョン: 5.1.53

MySqlでヘブライ文字列をテーブルに挿入するだけです:

insert into temp_table (temp_column) values ('ערך')

適当に見ました。ストアドプロシージャをそのまま設定すると、意味不明になります。

C# で呼び出すと、「不正な文字列値: '\xD7\xAA\xD7\xA8...' for column...」という例外が発生します。

英語の文字列を挿入すると、すべてが正しく取得されます。

何か案が?

4

3 に答える 3

2

テーブルを charset UTF8 として設定したとおっしゃいましたが、列のエンコーディングも UTF8 に設定しましたか?

または、ストアド プロシージャを実行する前に、MySql にコマンドを送信してみてください。SET NAMES utf8;

SET NAMES は、クライアントが SQL ステートメントをサーバーに送信するために使用する文字セットを示します。したがって、SET NAMES 'cp1251' はサーバーに、「このクライアントからの今後の着信メッセージは文字セット cp1251 である」ことを伝えます。また、結果をクライアントに返すためにサーバーが使用する文字セットも指定します。(たとえば、SELECT ステートメントを使用する場合に、列の値に使用する文字セットを示します。)

于 2010-12-31T16:16:43.810 に答える
1

ストアド プロシージャ文字セット utf8 に追加しました

SP_CityName では VARCHAR(100) charset utf8、SP_CitySynonyms では mediumtext charset utf8

そして今、それはうまくいきます...皆さんに感謝します。

于 2010-12-31T18:20:08.697 に答える
0

varchar の代わりに Text/LongText を使用します。照合順序も utf8_general_ci として使用します

于 2012-12-13T10:14:52.657 に答える