簡體   English   中英

Python ascii編碼問題

[英]Python ascii encoding issue

我運行python腳本,但收到以下錯誤

sql = 'insert into posts(msg_id, msg_text, msg_date) values("{0}", "{1}", "{2}")'.format(msg['id'], text.encode('utf-8'), msg['datime'])
UnicodeEncodeError: 'ascii' codec can't encode characters in position 25-31: ordinal not in range(128)

我該如何糾正此錯誤或可能捕獲到異常? 有任何想法嗎?

嘗試:

sql = u'insert into posts(msg_id, msg_text, msg_date) values("{0}", "{1}", "{2}")'.format(msg['id'], text.decode('utf-8'), msg['datime'])

基本上,您的text包含utf-8字符,並使用encode()方法將其保持不變。 但是主字符串(您要格式化的字符串)是純ASCII字符串。 通過在字符串( u'' )前面添加u ,可以使其成為unicode字符串。 然后,無論文本是什么,都希望將其解碼為utf-8 ,因此將.decode()而不是.encode()

如果您想捕獲這種錯誤,只需:

try:
    sql = …
except UnicodeEncodeError, err:
    print err

但是,如果您想真正擺脫任何utf8 / ascii混亂,您應該考慮切換到python 3。

HTH

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM