gpt4 book ai didi

python - Windows控制台,python和上标数字

转载 作者:可可西里 更新时间:2023-11-01 11:46:59 34 4
gpt4 key购买 nike

我在 Windows 控制台中工作,但无法打印 superscript digits 。这是我得到的:

>>> '¹²³⁴⁵⁶⁷⁸⁹'
'1²345678?'

>>> for i in '¹²³⁴⁵⁶⁷⁸⁹': print(i, i.encode())
...
1 b'1' # expect b'\x00\xb9' (U+00B9)
² b'\xc2\xb2' # expect b'\x00\xb2' (U+00B2)
3 b'3' # expect b'\x00\xb3' (U+00B2)
4 b'4' # expect b'\x20\x74' (U+2074)
5 b'5' # expect b'\x20\x75' (U+2075)
6 b'6' # expect b'\x20\x76' (U+2076)
7 b'7' # expect b'\x20\x77' (U+2077)
8 b'8' # expect b'\x20\x78' (U+2078)
? b'?' # expect b'\x20\x79' (U+2079)

我试过这样设置环境变量PYTHONIOENCODING

set PYTHONIOENCODING=utf-8

但我得到的是这个

>>> '¹²³⁴⁵⁶⁷⁸⁹'
   File "<stdin>", line 0

     ^
SyntaxError: 'utf-8' codec can not decode bytes 0xfd in position 2: invalid start byte

这种情况下的问题是“²”,实际上我得到了替换它

>>> '¹2³⁴⁵⁶⁷⁸⁹'
'12345678?'

我该如何解决?谢谢!

最佳答案

Eryksun's comment是对的:控制台对代码页 65001 (UTF-8) 的支持有问题。但是,有一个解决方法:创建一个 .py 脚本(保存为 UTF-8):

import unicodedata
x=u'¹²³⁴⁵⁶⁷⁸⁹'
for i in x:
print( i,
unicodedata.normalize('NFKC', i),
i.encode(), # the same as i.encode('utf-8')
hex(ord(i)),
''
)

输出 - 上面的脚本使用如下:

D:\bat\SO> set python
PYTHONIOENCODING=UTF-8

D:\bat\SO> chcp
Active code page: 65001

D:\bat\SO> D:\test\Python\Py3\42552164.py

¹ 1 b'\xc2\xb9' 0xb9
² 2 b'\xc2\xb2' 0xb2
³ 3 b'\xc2\xb3' 0xb3
⁴ 4 b'\xe2\x81\xb4' 0x2074
⁵ 5 b'\xe2\x81\xb5' 0x2075
⁶ 6 b'\xe2\x81\xb6' 0x2076
⁷ 7 b'\xe2\x81\xb7' 0x2077
⁸ 8 b'\xe2\x81\xb8' 0x2078
⁹ 9 b'\xe2\x81\xb9' 0x2079

D:\bat\SO>

环境:

  • Windows 8.1,
  • Python 3.5,
  • cmd 窗口字体 ConsolasDejaVu Sans Mono

资源:The Python Standard Library .

鉴于 Eryksun 的进一步评论,

更新。我不认为脚本解决方法是完美的。例如,print(x) 的输出(添加到上面的脚本中)将有一些尾随垃圾,如下所示:

¹²³⁴⁵⁶⁷⁸⁹
�⁶⁷⁸⁹
⁸⁹
��

尽管如此,由于任何非 ASCII 输入,它肯定比完全崩溃 Python 控制台要好:

D:\bat\SO> py -3
Python 3.5.1 (v3.5.1:37a07cee5969, Dec 6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> x=u'¹²³⁴⁵⁶⁷⁸⁹'


D:\bat\SO>

关于python - Windows控制台,python和上标数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42552164/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com