[英]Unicode characters not printing properly in terminal python
我写了一个非常简单的程序,告诉我一些字符的unicode值。
这是程序:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
characters = [u'T', u'ב', u'€', u'木', u'♥']
for character in characters:
print(character + " has the unicode value :\t"+str(hex(ord(character))) + "\n")
它给出了这个输出:
T has the unicode value : 84
ב has the unicode value : 1489
€ has the unicode value : 8364
木 has the unicode value : 26408
♥ has the unicode value : 9829
我注意到在我复制和粘贴时输出格式正确,但在我的计算机上,第二行在终端中显示如下
has the unicode value : 1489 ב
我也尝试将输出放入文件并使用vim查看文件,它也看起来像这样,应该首先打印的字符最后打印。 这使我认为它打印正确但没有正确显示。 什么可能导致这种情况发生?
可以使用Unicode LEFT-RIGHT OVERRIDE(LRO)字符0x202D覆盖希伯来字符的右对齐行为。
characters = [u'T', u'ב', u'€', u'木', u'♥']
for character in characters:
print(chr(0x202D) + character + " has the unicode value :\t"+str(hex(ord(character))) + "\n")
给(在OS X终端上):
T has the unicode value : 0x54
ב has the unicode value : 0x5d1
€ has the unicode value : 0x20ac
木 has the unicode value : 0x6728
♥ has the unicode value : 0x2665
感谢@ guribe94确定问题。
您可能会发现字符串格式更容易阅读:
print("%s%s has the unicode value :\t 0x%04x\n" %
(chr(0x202D), character, ord(character)))
只需将第一行替换为:
characters = [u'T', u'ב', u'€', u'木', u'♥']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.