0

私は C# .NET Mysql Connector を使用しています。このクエリを実行すると、次のようになります。

INSERT INTO convos (`userid`,`time`,`from`,`content`,`read`,`deleted`, `ip`, `source`, `charname`, `to`) VALUES ('3', '1347396787', 'Chára', '........', '0', '0', '0.0.0.0:0000', 'C', 'óóóíííí', 'óóóíííí');

次のエラーが表示されます。

不正な文字列値: 行 1 の列 'from' の '\xE1ra'

エンコーディングを理解しています。すべてが utf8、utf8_general_ci 用に構成されています。データベース、テーブル、および列は utf8 用に構成されています。データはクライアントから utf8 で送信されます。

Workbench などのサードパーティ ツールを使用してクエリを挿入するか、mysql コマンド ラインを使用すると、正常に動作します。コネクタにバグがあるのか​​ 、それとも挿入する前に値を使って何か他のことをする必要があるのか​​ わかりません。

何か案が?

ありがとう

mysql に正しいタイプに変換するものはありますか?

4

6 に答える 6

1

列の文字セットを変更する必要があると思います:

UTF-8 を使用している列には、以下のコードを使用します。

ALTER TABLE database.table MODIFY COLUMN col VARCHAR(255)  
CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
于 2012-09-12T07:33:02.357 に答える
1

しばらく時間がかかりましたが、文字セットを頻繁に設定していたようです。データベース、テーブル、列はすべて UTF8 です。接続を作成したとき、接続文字列に「CHARSET = UTF8」がありました。また、接続を確立するたびに「SET NAMES 'utf8' COLLATE 'utf8_general_ci'」を実行していました。CHARSET=UTF8 と "SET NAMES 'utf8' COLLATE 'utf8_general_ci'" を削除しましたが、現在はすべて機能しています。

于 2012-10-12T09:35:16.603 に答える
1

N 付きの Unicode 文字列プレフィックス

最初にテーブルの会話を確認し、列のデータ型が nchar、nvarchar のいずれかであることを確認します。SQL Server で Unicode 文字列定数を扱うときは、すべての Unicode 文字列の前にプレフィックス N を付ける必要があります

ティル:

    insertQuery = "INSERT INTO convos (`userid`,`time`,`from`,`content`,`read`,`deleted`, `ip`, `source`, `charname`, `to`) VALUES
 (N'3', N'1347396787', N'Chára', N'........', N'0', N'0', N'0.0.0.0:0000', N'C', N'óóóíííí', N'óóóíííí')";
于 2012-09-12T07:39:17.487 に答える
0

更新する

INSERT INTO convos (`userid`,`time`,`from`,`content`,`read`,`deleted`, `ip`, `source`, `charname`, `to`) VALUES ('3', '1347396787', 'Chara', '........', '0', '0', '0.0.0.0:0000', 'C', 'óóóíííí', 'óóóíííí');

3番目の値の「chara」はそれを与えると思います

于 2012-09-12T07:33:43.930 に答える