python-2.7 - 在 python 中打印非 ascii 文本
问题描述
我正在使用 python2,我想将非 utf-8 文本转换为可读字符串。我也在尝试使用 latin-1 和 utf-8 进行解码。但我没有成功。
这是字符串
s = ' ¤¿à¤²à¤¾ मेंदान रोड़ इंदौर'
我试过了:
s.decode('utf-8')
我得到以下输出:
u' \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xbf\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xb2\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xbe \xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xae\xc3\u0192\xc2 \xc3\u201a\xc2\xa5\xc3\xa2\xc2\u20ac\xc2\xa1\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\xa2\xc2\u20ac\xc2\u0161\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xa6\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xbe\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xa8 \xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xb0\xc3\u0192\xc2 \xc3\u201a\xc2\xa5\xc3\xa2\xc2\u20ac\xc2\xb9\xc3\u0192\xc2 \xc3\u201a\xc2\xa5\xc3\u2026\xc2\u201c \xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\xa2\xc2\u20ac\xc2\xa1\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\xa2\xc2\u20ac\xc2\u0161\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xa6\xc3\u0192\xc2 \xc3\u201a\xc2\xa5\xc3\u2026\xc2\u2019\xc3\u0192\xc2 \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xb0'
上面的输出仍然不可读。
任何帮助将不胜感激
解决方案
首先第一件事:你必须阅读这个,没有任何借口。
完成后,您将了解在不知道原始编码的情况下尝试将字节字符串解码为 unicode 主要是浪费时间。
第二点:this(为便于阅读而缩短):
u' \xc3\u201a\xc2\xa4\xc3\u201a\xc2\xbf\xc3\u0192\xc2 '
是 Python 的 unicode 字符串的内部表示 - 通过显示字节字符串的内部表示,您会得到类似的东西:
$ python
Python 2.7.15rc1 (default, Apr 15 2018, 21:51:34)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> s = "¤¿à¤²ÃÂ"
>>> s # internal representation
'\xc3\x83\xe2\x80\x9a\xc3\x82\xc2\xa4\xc3\x83\xe2\x80\x9a\xc3\x82\xc2\xbf\xc3\x83\xc6\x92\xc3\x82 \xc3\x83\xe2\x80\x9a\xc3\x82\xc2\xa4\xc3\x83\xe2\x80\x9a\xc3\x82\xc2\xb2\xc3\x83\xc6\x92\xc3\x82'
>>> print(s) # readable output
¤¿à¤²ÃÂ
因此,您在这里唯一的问题是将内部表示与“人类可见”输出混淆
现在请注意,字符串最终将如何显示给用户取决于执行渲染的软件(如果从命令行运行 python 并打印到标准输出,则您的 xterm 或等效项,如果将其渲染为服务器端生成的 HTTP 的一部分,则您的浏览器响应等)和系统设置,所有这些都超出了 Python 的职责范围。
推荐阅读
- oracle - Oracle APEX - 使用 PL/SQL 初始化交互式网格列
- mysql - 是否以有效的方式将数组存储在数据库中?
- primefaces - 将轮播分页按钮样式更改为页码
- interrupt - 了解用于禁用和恢复 SREG 中断状态的 AVR 代码
- .net - Docker镜像多阶段构建,FROM关键字不能与AS关键字一起使用
- python - 如何在印地语(unicode)中组合两个字母?(例如 क 和 ख)
- plot - 可视化矩阵分解
- javascript - 获取 Google Analytics 会话超时时间/会话时间?
- c# - 播放器触摸部件时播放声音
- python - python中的哈希映射实现