LD2*_*D2k 5 python utf-8 character-encoding
我正在使用命令行解释器(适用于Windows的v3.5)自学Python。
我要做的就是输出一些包含欧元(€)符号的文本,据我了解该代码为80h(12月128日)。
#!
# -*- coding: utf-8 -*-
mytext = 'Please pay \x8035.'
print(mytext)
Run Code Online (Sandbox Code Playgroud)
它落在最后一行:
UnicodeEncodeError: 'charmap' codec can't encode character '\x80' in position 11: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)
我已经进行了大量的谷歌搜索(重新编码等),并且我大致了解了为什么print命令失败。修改上面的代码表明,\ x7f以下的ASCII代码可以正常工作,正如人们所期望的那样。
但是我不知道如何显示€,并且发现有关编码的信息不堪重负且难以理解。(请记住我只是菜鸟!)
请能有人告诉我一些代码,只是作品,所以我可以研究它,并从那里工作倒退。谢谢!
以下是四种在Python 3.x中按欧元顺序打印带有欧元符号的字符串的方法,以增加晦涩度的顺序。
1.直接输入
使用键盘输入符号,或从其他位置复制并粘贴它:
mytext = "Please pay €35."
print(mytext)
Run Code Online (Sandbox Code Playgroud)
2.使用Unicode字形数字
例如从非常有用的页面http://www.fileformat.info/info/unicode/中查找Unicode字形编号,然后在您的字符串中使用该代码:
mytext = "Please pay \u20ac35."
print(mytext)
Run Code Online (Sandbox Code Playgroud)
3.使用字形名称
您可以lookup()从unicodedata模块中使用按名称访问Unicode字形。同样,http://www.fileformat.info/info/unicode/将帮助您找到字形名称:
import unicodedata
mytext = "Please pay {}35.".format(unicodedata.lookup("EURO SIGN"))
print(mytext)
Run Code Online (Sandbox Code Playgroud)
4.使用Windows-1252代码页
如果您确实想使用\x80字节码,则可以这样做,因为它在Windows-1252代码页中代表欧元符号。您需要做的是首先创建一个包含该字节代码的字节字符串,然后对该字节字符串进行解码,以便将该字节代码转换为Windows-1252代码页中的欧元符号条目:
mytext = b"Please pay \x8035.".decode("windows-1252")
print(mytext)
Run Code Online (Sandbox Code Playgroud)
**You can use Unicode Character Name**
Run Code Online (Sandbox Code Playgroud)
\ N {name}是打印Unicode字符符号的好方法
这是示例运行。
>>> print "Please pay %s"%(u"\N{euro sign}")
Please pay €
>>> print "Please pay %s"%(u"\N{dollar sign}")
Please pay $
>>> print "Please pay %s"%(u"\N{rupee sign}")
Please pay ?
>>> print "Please pay %s"%(u"\N{pound sign}")
Please pay £
Run Code Online (Sandbox Code Playgroud)
而已...
你可以使用这个:
\n\nmytext = \'Please pay \\u20ac.\'\nprint(mytext)\nRun Code Online (Sandbox Code Playgroud)\n\n...基于Unicode 字符 \'EURO SIGN\'。
\n\n但是,如果该字符可以用脚本的字符编码表示,那么您就没有理由不写:
\n\nmytext = \'Please pay \xe2\x82\xac.\'\nRun Code Online (Sandbox Code Playgroud)\n