打印 ASCII 0-127 以外的字符 (Python 3)

Printing characters that are not in ASCII 0-127 (Python 3)

所以,我有一个算法,通过该算法我可以获取一个字符,获取其字符代码,将该代码增加一个变量,然后打印该新字符。但是,我也希望它适用于不在默认 ASCII table 中的字符。目前它不打印 'special' 字符,如 (例如)。我怎样才能让它打印某些特殊字符?

#!/usr/bin/python3
# -*- coding: utf-8 -*-

def generateKey(name):

    i = 0
    result = ""

    for char in name:

        newOrd = ord(char) + i
        newChar = chr(newOrd)
        print(newChar)

        result += newChar

        i += 1

    print("Serial key for name: ", result)

generateKey(input("Enter name: "))

每当我输入强制使用特殊字符(如 |||||)时,前四个字符(包括 DEL 提供透明矩形图标)都可以正常工作,但第五个字符字符(意味着 )也是一个错误字符,这不是我想要的。我该如何解决这个问题?

这是 ||||| 的输出:

Enter name: |||||
|
}
~


Serial key for name:  |}~

但最后一个字符应该是,而不是空白。 (顺便说一句,当我将第四个字符 DEL 复制到 Windows 时,它变成了一个透明的矩形)

在默认编码(utf-8)中,chr(128)不是欧元符号。这是一个控制角色。参见 this Unicode table。所以它确实应该是空白的,而不是 .

您可以使用 sys.getdefaultencoding() 验证默认编码。

如果您想将 chr(128) 重新解释为欧元符号,您应该使用 windows-1252 编码。那里确实是欧元符号。 (不同的编码不同意如何表示超出 ASCII 的 0–127 的值。)