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 で表示するのがあたりまえになってきたので、そんなの忘れてたなぁ
2013-01-09 22:45
コメント(0)
トラックバック(0)
コメント 0