1

「不正な文字列値エラー」はMySQLdbから発生します。

_mysql_exceptions.OperationalError: (1366, "Incorrect string value: '\\xF0\\xA0\
\x84\\x8E\\xE2\\x8B...' for column 'from_url' at row 1")

しかし、私はすでに接続文字セットとurlエンコーディングからutf8の両方を設定しています。以前のレコードでは、何百万もの問題なく機能します。

例外の原因となる値:この問題は、特殊文字u'\ U0002010e'(中国の特殊文字 "ㄋ")に関連していると思います。

u'http://www.ettoday.net/news/20120227/27879.htm?fb_action_ids=305328666231772&
fb_action_types=og.likes&fb_source=aggregation&fb_aggregation_id=288381481237582
 \u7c89\u53ef\u611b\U0002010e\u22ef http://www.ettoday.net/news/20120221/26254.h
tm?fb_action_ids=305330026231636&fb_action_types=og.likes&fb_source=aggregation&
fb_aggregation_id=288381481237582 \u597d\u840c\u53c8\u22ef'

ただし、この文字はPythonでもutf8としてエンコードできます。

>>> u'\U0002010e'.encode('utf8')
'\xf0\xa0\x84\x8e'

では、なぜMySQLはこの文字を受け入れることができないのでしょうか。

4

2 に答える 2

5

使用している文字は BMP の外にあるため、保存するのに4バイトが必要です。utf8文字セットを使用するだけでは十分ではありません。MySQL 5.5 以降が必要で、utf8mb4代わりに文字セットを使用する必要があります。

于 2012-09-06T02:30:06.277 に答える
0

mysql に設定した文字セット エンコーディングを確認し、utf8 エンコーディングを受け入れるものを使用していることを確認してください。

于 2012-09-06T02:29:06.260 に答える