Python3網頁抓取Non-BMP character not supported in Tk怎麼解決?

我用

content = request.urlopen(req).read().decode("UTF-8")

在抓取完網頁print的時候,出現了如下錯誤

UnicodeEncodeError: "UCS-2" codec can"t encode characters in position 14-14: Non-BMP character not supported in Tk

我稍微查了一下,似乎是python自身編碼不能映射奇怪的符號,但是在網上找了很久也沒找到解決的方法。有人可以知道怎麼解決么


根據前面幾位的鏈接驗證後得出解決如下錯誤的方法:

錯誤:UnicodeEncodeError: "UCS-2" codec can"t encode characters in position 14-14: Non-BMP character not supported in Tk

原因:有的字元特殊是python自身編碼不能映射奇怪的符號,比如微信中有的用戶名是一個小圖片什麼的。如:下圖紅色圓圈部分。

解決辦法:採用方法:

non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)

print(x.translate(non_bmp_map))

其中x是獲取的字元。


Traceback (most recent call last):

File "D:python圖片下爬蟲jpg.py", line 25, in &

getImg(html)

File "D:python圖片下爬蟲jpg.py", line 15, in getImg

print(html)

File "D:pythonlibidlelibPyShell.py", line 1318, in write

return self.shell.write(s, self.tags)

UnicodeEncodeError: "UCS-2" codec can"t encode characters in position 47639-47639: Non-BMP character not supported in Tk

這是我寫一個圖片下載爬蟲時出的問題,後面百度了好久終於解決了,說一下我的解決方法,僅供參考,初學Python。參考了python - "UCS-2" codec can"t encode characters in position 1050-1050

import sys
non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)
page = request.urlopen(url)
html = page.read().decode().translate(non_bmp_map)


你可以參考一下

python - "UCS-2" codec can"t encode characters in position 1050-1050


我也遇到了相同問題,怎麼解決的?


樓主,解決了么?


相同問題啊,這個編碼問題 Python3真的很噁心,折騰了n多天,不如Python2.7好用。


推薦閱讀:

python3下,re.findall返回值前後的[" 『]怎麼去掉?
pycharm 如何程序運行後,仍可查看變數值?(非Debug mode, 因為debug運行太慢)
python對變數賦值為什麼會出現以下的情況?
在同一台電腦下如何進行 Python 2 與 3 的切換?
python3是如何處理字元異常的?

TAG:Unicode統一碼 | Python3x | 網頁抓取 |