0

XMLを解析してMySQLに入れています。現在、MySQLは、挿入する特定のレコードに対して次のエラーを表示しています。

SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xEAm-Kh\xEA...'

XML内のデータを確認すると、次のように表示されます。iêm-Khê
特殊文字êは何に変換されxEA
ていますか?

元のキャラクターを維持してデータベースに入れるためにどうすれば解決できますか?

参考までに、ここにいくつかの情報があります。

  • 私のMySQLDB全体が使用していますlatin1_swedish_ci
  • しかし、そのTABLE&COLUMNは使用していますutf8_general_ci
  • **そのiêm-Khê値を手動でMySQLレコードに直接コピー/貼り付けすると、保存されます。(つまり、MySQLはその特殊文字を受け入れています。)したがって、問題はコーディング側にあると思います。
4

3 に答える 3

1

いくつかの追加の調査の後、私は解決策への2つの可能なアプローチに出くわしました。

- the first option is to use php's utf8_encode() function.
- the second option uses some code with the PDO using set names (though there seemed to be some discussion as to whether or not this worked for everyone.

$handle = new PDO("mysql:host=localhost;dbname=dbname",
    'username', 'password', 
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

次のリンクには、その他の役立つ情報があります。 ここを参照してください

于 2012-10-05T04:14:29.220 に答える
0

データベースの文字セットをに設定する必要がありますUTF-8

指示:

ALTER DATABASE db_name CHARACTER SET utf8 COLLATE utf8_general_ci;

列を変更するには:

ALTER TABLE [table_name] MODIFY
[column_name] [data_type]
CHARACTER SET utf8
COLLATE utf8_general_ci;
于 2012-10-05T04:13:08.163 に答える
0

UTF-8 charsetmysql DBに定義する必要があります。default以前は、作成時に、または作成時にlatin charset定義できます。utf-8table definitiondatabase

テーブルへ

 create table `my_table` (.....

  .... ) DEFAULT CHARSET=utf8;

データベースへ

CREATE DATABASE mydb  DEFAULT CHARACTER SET utf8 

着用している場合は修正してください

于 2012-10-05T04:19:07.957 に答える