我希望使用utf-8編碼中的cp437字符映射。utf-8中選定的字符映射
我有每個cp437字符的所有代碼點。
下面的代碼正確地顯示一個CP437字符:
import locale
locale.setlocale(locale.LC_ALL, '')
icon u'\u263A'.encode('utf-8')
print icon
而下面的代碼顯示大部分CP437字符,而不是全部:
for i in range(0x00,0x100):
print chr(i).decode('cp437')
我的猜測是,第2個方法沒有引用utf-8編碼,而是單獨的不完整的cp437字符集。
我想從utf-8中調用一個cp437字符,而不必指定每個256個單獨的代碼點。我用手工在一個大型的16x16表格中輸入了unicode代碼點字符串。有沒有更好的辦法?
下面的代碼演示了這一點:
from curses import *
import locale
locale.setlocale(locale.LC_ALL, '')
def main(stdscr):
maxyx = stdscr.getmaxyx()
text= str(maxyx)
y_mid=maxyx[0]//2
x_mid=maxyx[1]//2
next_y,next_x = y_mid, x_mid
curs_set(1)
noecho()
event=1
y=0; x=0
icon1=u'\u2302'.encode('utf-8')
icon2=chr(0x7F).decode('cp437')
while event !=ord('q'):
stdscr.addstr(y_mid,x_mid-10,icon1)
stdscr.addstr(y_mid,x_mid+10,icon2)
event = stdscr.getch()
wrapper(main)
圖標左邊是UTF-8和沒有打印到屏幕上。 右邊的圖標是從解碼(「CP437」),並且不打印到屏幕上正確[顯示爲^]
你爲什麼認爲cp437字符集是不完整的?你錯過了什麼[codepage中的代碼點](https://en.wikipedia.org/wiki/Code_page_437)?請注意,並非所有的代碼點都是*可打印的字符。* –
Python cp437實現遵循Windows代碼頁,它使用代碼點0-127的ASCII表。我看到IBM ROM爲這些位置定義了位圖。我擔心那些會要求你創建一個你自己的桌子。 –