[英]Python unicode force convert to ascii (str)
在Django中使用post時,ASCII字符串將自動轉換為Unicode字符串。 例如:
s = '\xe2\x80\x99'
是一個str類型的字符串。 (這是utf-8格式)
當將此字符串發布到django,然后從request.POST獲取它時,它將被傳輸到unicode字符串:
u'\xe2\x80\x99'
這可能會導致解碼/編碼錯誤,因為python認為這是unicode字符串,但實際上它是utf-8字符串。
我的問題是如何強制將Unicode字符串轉換為ASCII字符串? 這意味着只需將前置u從u'\\ xe2 \\ x80 \\ x99'刪除為'\\ xe2 \\ x80 \\ x99'。 在這種情況下,像解碼和編碼這樣的傳統方法可能不起作用。
當接收到請求時,響應的編碼被錯誤地聲明為(可能) iso-8859-1
,或者可能根本沒有聲明,並且默認為該編碼。 該網站應正確聲明其編碼並帶有標頭:
<headers>
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
</headers>
但是,如果這不受您的控制,則可以撤消編碼並正確解碼:
>>> s = u'\xe2\x80\x99'
>>> s.encode('iso-8859-1')
'\xe2\x80\x99'
>>> s.encode('iso-8859-1').decode('utf8')
u'\u2019'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.