在Python中我有一個字符串S =「Test」。我想將字符串編碼爲CP1256,ISO-8859-1,ISO-8859-2,ISO-8859-6,ISO-8859-15和Window-1252格式。我怎樣才能將字符串編碼成上述格式?在Python中對字符串進行編碼
回答
只需使用codecs
模塊
import codecs
codecs.encode("hello", "iso-8859-6")
如果你想先檢查Python是否知道一定編碼格式的只是使用
format_name = "iso-8859-6"
try:
codecs.lookup(format_name)
except LookupError:
print "Encoding {} can't be found".format(format_name)
我不知道爲什麼斯拉瓦巴切里科夫d提出了他的答案,但這是正確的答案,所以我會再詳細說明。
str.encode
正是你想要什麼:
返回字符串作爲
bytes
對象的編碼版本。默認編碼是'utf-8'
。可能會給出錯誤來設置不同的錯誤處理方案。錯誤的默認值是'strict'
,這意味着編碼錯誤會引起UnicodeError
。其他可能的值爲'ignore'
,'replace'
,'xmlcharrefreplace'
,'backslashreplace'
以及通過codecs.register_error()
註冊的任何其他名稱,請參見部分Codec Base Classes。有關可能的編碼列表,請參見部分Standard Encodings。
如果你按照標準編碼的鏈接,你會看到一個漂亮的表格,顯示你用於每一個的名稱(你可以使用主編解碼器名稱或任何別名)。
所以:
encoded_bytes = [S.encode(codec) for codec in
('cp1256', 'iso-8859-1', 'iso-8859-2', 'iso-8859-6',
'iso-8859-15', 'windows-1252')]
雖然你能使用codecs.encode
爲其他答案建議,真的沒有很好的理由這樣做,和一個很好的理由不來:str.encode
強制執行的事實,您在str
對象上調用它,並使用將str
轉換爲bytes
的編解碼器;如果您不小心在已編碼的bytes
或list
或其他東西上使用它,您會得到一個例外。
上述所有的假設你如果你使用的是Python 2使用Python 3,一個str
已被編碼。因此,如果您可以從unicode
對象開始,如u"Test"
而不是,請執行此操作;如果沒有,你會首先想要decode
。不幸的是,Python 2不會強制執行該操作;如果你打電話給str.encode
,它實際上會用sys.getdefaultencoding
進行解碼,通常是ASCII,這會導致愚蠢的錯誤。
謝謝Abarnert最後它的工作......願上帝保佑你:) – 2014-09-30 17:41:27
- 1. 如何在Python中對字符串進行二進制編碼?
- 2. 對Python中的字符串進行URL編碼和解碼
- 3. 在Python中對unicode特殊字符(符號)進行編碼?
- 4. 對字符進行編碼
- 5. 編碼字符串在Python
- 6. 如何在C#中對字符串進行URL編碼
- 7. 如何在Erlang中對一個字符串進行XML編碼?
- 8. 如何在Angularjs中對字符串進行編碼?
- 9. 如何在PostgreSQL中對一個字符串進行XML編碼?
- 10. 如何在Android中使用Base64對字符串進行編碼?
- 11. 如何在ColdFusion中對字符串進行編碼,排除「dot」
- 12. 對字符串進行編碼和解碼的JavaScript對象
- 13. 在Python中對字符串中的字符進行排序
- 14. C#使用換行符對文本字符串進行編碼
- 15. 無法在PHP中對字符進行編碼(錯誤的字符串值)
- 16. 在Python中的字符串編碼
- 17. 無法對Swift中的字符串數組進行編碼
- 18. 對Huffman壓縮中的位進行編碼的字符串
- 19. 阻止ASP.NET在輸出上對字符串進行編碼
- 20. 使用Base64String對已解碼的字符串進行編碼
- 21. 使用字符串輸出對條形碼進行編碼
- 22. 如何對空字符串進行編碼/解碼
- 23. 如何對簡單字符串進行編碼/解碼
- 24. 的Python:編碼字符串
- 25. Python字符串編碼和==
- 26. 編碼字符串字節在Python
- 27. 在python中進行字符串比較
- 28. base64在NodeJS和Python中編碼二進制字符串
- 29. 如何在python中對轉義序列字符進行編碼/解碼
- 30. 在比較PHP中的字符串之前對編碼進行統一編制
你有嘗試過什麼嗎? – 2014-09-29 19:37:48
我試過編碼UTF-8,UTF-16和ASCII編碼時沒有任何錯誤,但是在提到的編碼情況下我遇到了問題。 – 2014-09-30 17:12:38