如何在 python 中打印像 ♟ 这样的字符
How can I print characters like ♟ in python
我正在尝试在 python 2.7 中打印一个干净的棋盘,它使用独特的字符,例如♟。
我曾尝试简单地替换字符串中的一个值 ("g".replace(g, ♟)
),但它被更改为 '\xe2\x80\xa6'
。如果我将字符放入在线 ASCII 转换器中,它 returns "226 153 159"
♟
是一个 unicode 字符。在python2中,str
保存的是ascii字符串或者二进制数据,而unicode
保存的是unicode字符串。当您执行 "♟"
时,您将获得 unicode 字符串的二进制编码版本。该编码是什么取决于您用来输入它的 editor/console 。使用 UTF-8 对字符串进行编码是很常见的(我认为是首选),但您可能会发现 Windows 编辑器更喜欢 little-endian UTF-16 字符串。
无论哪种方式,您都希望尽可能将字符串编写为 unicode。您可以在 str
和 unicode
之间做一些 mix-and-matching 但要确保 ASCII 代码集之外的任何内容从一开始就是 unicode。
Python 可以在文件的前面进行编码提示。因此,假设您使用 UTF-8 编辑器,您可以
!@/usr/bin/env python
# -*- coding: utf-8 -*-
chess_piece = u"♟"
print u"g".replace(u"g", chess_piece)
我正在尝试在 python 2.7 中打印一个干净的棋盘,它使用独特的字符,例如♟。
我曾尝试简单地替换字符串中的一个值 ("g".replace(g, ♟)
),但它被更改为 '\xe2\x80\xa6'
。如果我将字符放入在线 ASCII 转换器中,它 returns "226 153 159"
♟
是一个 unicode 字符。在python2中,str
保存的是ascii字符串或者二进制数据,而unicode
保存的是unicode字符串。当您执行 "♟"
时,您将获得 unicode 字符串的二进制编码版本。该编码是什么取决于您用来输入它的 editor/console 。使用 UTF-8 对字符串进行编码是很常见的(我认为是首选),但您可能会发现 Windows 编辑器更喜欢 little-endian UTF-16 字符串。
无论哪种方式,您都希望尽可能将字符串编写为 unicode。您可以在 str
和 unicode
之间做一些 mix-and-matching 但要确保 ASCII 代码集之外的任何内容从一开始就是 unicode。
Python 可以在文件的前面进行编码提示。因此,假设您使用 UTF-8 编辑器,您可以
!@/usr/bin/env python
# -*- coding: utf-8 -*-
chess_piece = u"♟"
print u"g".replace(u"g", chess_piece)