簡體   English   中英

消毒UTF-8編碼的字符串

[英]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.

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