繁体   English   中英

Unicode字符在终端python中无法正确打印

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM