python - Django/Python : How does python encode non-English characters

标签 python encoding

我正在处理一些字符串操作并尝试将它们放入数据库中。然后我遇到了这个(我相信是德语):

Sichere Administration von VoIP-Endgeräten

将其放入数据库后,我发现非英文字符变成了:

Sichere Administration von VoIP-Endger\u00e4ten

当我从数据库中获取它并将该字符串传递给 subprocess.Popen() 时,它给出错误:

TypeError: execv() arg 2 must contain only strings

我的问题是:这是怎么发生的?还有人有关于如何学习编码/解码内容的有用引用吗?谢谢。

最佳答案

是的,请阅读Python Unicode HOWTO ;您正在处理编码和 unicode 文本。

第一个字符串是 UTF-8 数据,被解释为 Latin-1,第二个字符串是 unicode 字符串,如果不先编码,则无法传递给 Popen():

>>> print u'\u00e4'  # A unicode escape code for the latin-1 character ä
ä
>>> u'\u00e4'.encode('utf8')  # The same character encoded to UTF-8
'\xc3\xa4'
>>> print u'\u00e4'.encode('utf8').decode('latin1')  # Misinterpreted as Latin-1
ä

您需要弄清楚外部进程可以处理什么编码,并在将数据传递给 .Popen() 之前对数据调用 .encode()

关于python - Django/Python : How does python encode non-English characters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13981092/

相关文章:

python - SOAPpy 中的 namespace 未按预期工作

python - 在 Python 中使用正则表达式查找首字母缩略词

wcf - 使用二进制文件时丢失 WCF 故障异常详细信息

python - 为什么 Gmail 不显示我的 RFC 2047 编码发件人 header ?

ruby-on-rails - 如何使我的 Ruby regEx 编译为与它所应用的变量相同的编码?

python - 将 numpy 数组列表转换为单个 int numpy 数组

python - IndexError:列表索引超出范围,face_recognition

python - 在 Python 中最有效地迭代大型字典列表

python - MBCS 编码未知

sqlite - 在AIR应用程序中发布PRAGMA声明