[英]Sanitizing UTF-8 encoded strings
我想在將UTF-8編碼的字符串用作MySQL SELECT語句的一部分之前對其進行清理。
例如,我有:
query = MySQLdb.escape_string(query)
但此行導致引發的異常讀取
'ascii'編解碼器無法在位置0-2處編碼字符:序數不在范圍(128)中。
我該如何處理?
在您的示例中, query
的類型為“ str”。 如果在字符串前放置“ u”,則它的類型將變為“ unicode”。
>>> query = "こうえん"
>>> print type(query)
<type 'str'>
>>> query = u"こうえん"
>>> print type(query)
<type 'unicode'>
這是Python版本2.x和3.x之間的主要區別之一。 從3.0開始,默認情況下所有字符串均為“ unicode”。
看起來MySQLdb正在嘗試將您的unicode查詢編碼為字符串。 為此,它使用默認編碼:ASCII。
現在,您的輸入不能被編碼為ASCII,因此您只需要告訴python它應該使用哪種編碼:utf-8。
您可以使用query = query.encode('utf-8').
query = "こうえん"
query = MySQLdb.escape_string(unicode(query,'utf-8'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.