python - 将 ASCII 编码转换为 Unicode 编码问题

标签 python python-2.x

我有一个关于 Python 2 编码的问题。我正在尝试将包含字母 Unicode 代码的 ASCII 字符串解码为 Unicode,然后将其编码回 Latin-1,但没有成功。这是一个例子:

In[27]: d = u'\u010d'

In[28]: print d.encode('utf-8')

č

In[29]: d1 = '\u010d'

In[30]: d1.decode('ascii').encode('utf-8')

Out[30]: '\\u010d'

我想转换'\u010d''č' 。是否有任何内置解决方案可以避免自定义字符串替换?

最佳答案

当你这样做

d1 = '\u010d'

你实际上得到了这个字符串:

In [3]: d1
Out[3]: '\\u010d'

这是因为“普通”(非 Unicode)字符串无法识别 \unnnn 转义序列,因此将其转换为文字反斜杠,后跟 unnnn .

为了解码它,您需要使用 unicode_escape codec :

In [4]: print d1.decode("unicode_escape").encode('utf-8')
č

但是,当然,您首先不应该在非 Unicode 字符串中使用 Unicode 转义序列。

关于python - 将 ASCII 编码转换为 Unicode 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36126080/

相关文章:

python - 在两个不同的文件中转储和加载 dill ( pickle )

python - Tesseract/PYOCR 将 'Z' 检测为 '2'

python - UnicodeEncodeError : 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)

python - 无法使用 subprocess.Popen 捕获 ls -la 的结果

Python 异常链

python - 从文本中删除时间线(继续没有时间线的文本)

python - 使用 savefig() 将图形导出为 pdf 会弄乱 matplotlib 中的轴背景

python - 在 Tornado 中将 Content-Length header 从服务器写入客户端

python - 结构化 python 文档字符串,IDE 友好

python - 在 Python 中用一行写一个阶乘函数