emダッシュとかいうやつの unicode.encode() で、UnicodeEncodeError 。 MySQL から探す [Python/Django/Zope]
python で、 unicode -> cp932 に 変換しようとしたら、UnicodeEncodeError になった。
UnicodeEncodeError: 'cp932' codec can't encode character u'\u2014' in position 40: illegal multibyte sequence
emダッシュとかいうらしい
http://ja.wikipedia.org/wiki/%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5_%28%E8%A8%98%E5%8F%B7%29
元データは utf-8 の MySQL の中にあったのだが、ではどう探せばいいか。ここ↓にあった
http://stackoverflow.com/questions/12189955/convert-characters-pasted-from-word-in-php-and-mysql
SELECT * FROM foo WHERE col like CONCAT('%', UNHEX('E28094'), '%')
s.encode('cp932', 'ignore')
とか
s.encode('cp932', 'replace'0
とかすることで許してもらえた。
思えば、昔は unicode -> jis 変換で、丸数字に当たったりして、 'ignore' とか 'replace' とかしてたけど、メールの日本語変換の必要もなくなって、 Web でも UTF-8 で表示するのがあたりまえになってきたので、そんなの忘れてたなぁ
UnicodeEncodeError: 'cp932' codec can't encode character u'\u2014' in position 40: illegal multibyte sequence
>>> s = u'\u2014' >>> s u'\u2014' >>> s.encode('utf-8') '\xe2\x80\x94' >>> print s.encode('utf-8') — >>> s.encode('cp932') Traceback (most recent call last): File "", line 1, in UnicodeEncodeError: 'cp932' codec can't encode character u'\u2014' in position 0: illegal multibyte sequence >>>
emダッシュとかいうらしい
http://ja.wikipedia.org/wiki/%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5_%28%E8%A8%98%E5%8F%B7%29
元データは utf-8 の MySQL の中にあったのだが、ではどう探せばいいか。ここ↓にあった
http://stackoverflow.com/questions/12189955/convert-characters-pasted-from-word-in-php-and-mysql
SELECT * FROM foo WHERE col like CONCAT('%', UNHEX('E28094'), '%')
s.encode('cp932', 'ignore')
とか
s.encode('cp932', 'replace'0
とかすることで許してもらえた。
思えば、昔は unicode -> jis 変換で、丸数字に当たったりして、 'ignore' とか 'replace' とかしてたけど、メールの日本語変換の必要もなくなって、 Web でも UTF-8 で表示するのがあたりまえになってきたので、そんなの忘れてたなぁ
コメント 0