簡體   English   中英

Python Unicode強制轉換為ASCII(STR)

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

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