1

SQL クエリを実行しようとしていますが、次のエラーが発生します。

Incorrect string value: '\xCC_a' for column

mysql クエリを中断する CSV ファイルの行:

Juan Gordon,GarcÃ_a,noman@gmail.com,,,,,,,,,,y,

SQL エラー:

<p>Error Number: 1366</p><p>Incorrect string value: '\xCC_a' for column 'last_name' at row 1</p><p>INSERT INTO `phppos_people` (`first_name`, `last_name`, `email`, `phone_number`, `address_1`, `address_2`, `city`, `state`, `zip`, `country`, `comments`) VALUES ('Juan Gordon', 'Garc�_a', 'noman@test.com', '', '', '', '', '', '', '', '')</p><p>Filename: /Library/WebServer/Documents/phppos/PHP-Point-Of-Sale/models/person.php</p><p>Line Number: 75</p>  </div>

last_name はvarchar(255) utf8_unicode_ci

$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_unicode_ci';

CSV コードの例

?>


last_name = GarcÌ_a

更新: Excel でファイルを .csv として保存するときのエンコーディングは、改行として CR を含む Westren (Mac OS Roman) であることを知りました。

ファイルのエンコーディングが問題を引き起こす可能性があると思います。しかし、私はそれをサポートする必要があります。

4

1 に答える 1

2

Mac OS Roman にエクスポートできる唯一の Excel は、明らかに OSX 用の MS Excel です。残念ながら私はこれを持っていないので、正しい文字セットでエクスポートする方法を確認できません

あなたには今、2つの選択肢があります

a)たとえば、 iconvを使用して CSV を UTF-8 に変換します。

iconv -f MACROMAN -t UTF8 < yourfile.csv > yourfile-utf8.csv

b) インポートする前に、接続文字セットをファイルの文字セットに設定します。

SET NAMES macroman;

codeigniter では、これは次のようになります

$this->db->simple_query('SET NAMES \'macroman\'');

インポートが完了したら、元に戻すことを忘れないでください

$this->db->simple_query('SET NAMES \'utf8\'');

説明:

接続文字セットが UTF-8 の場合、データベースは UTF-8 でエンコードされたデータを除外します。接続文字セットを設定し、macroman書き込む列が UTF-8 の場合、MySQL はこれを自動的に変換します。

http://dev.mysql.com/doc/refman/5.5/en/charset-connection.htmlから

SET NAMES 'charset_name' [COLLATE 'collat​​ion_name']

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

私の freeBSD マシンでは、MySQL にマクロマン文字セットがコンパイルされています。これもあると思います。

mysql> SELECT * FROM information_schema.COLLATIONS WHERE CHARACTER_SET_NAME = 'macroman';
+---------------------+--------------------+----+------------+-------------+---------+
| COLLATION_NAME      | CHARACTER_SET_NAME | ID | IS_DEFAULT | IS_COMPILED | SORTLEN |
+---------------------+--------------------+----+------------+-------------+---------+
| macroman_general_ci | macroman           | 39 | Yes        | Yes         |       1 |
| macroman_bin        | macroman           | 53 |            | Yes         |       1 |
+---------------------+--------------------+----+------------+-------------+---------+

http://dev.mysql.com/doc/refman/5.5/en/charset-charsets.htmlも参照してください。

お役に立てれば

于 2013-01-11T18:56:47.660 に答える