打印 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 的值。)
所以,我有一个算法,通过该算法我可以获取一个字符,获取其字符代码,将该代码增加一个变量,然后打印该新字符。但是,我也希望它适用于不在默认 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 的值。)