gpt4 book ai didi

Python3 以奇怪的方式处理非 ASCII 字符

转载 作者:太空宇宙 更新时间:2023-11-04 09:29:49 25 4
gpt4 key购买 nike

我试图用 Python 3 解决一个 pwnable。为此我需要打印一些不在 ASCII 范围内的字符。

Python 3 正在将这些字符转换成一些奇怪的 Unicode。

例如,如果我在 Python 3 中打印 "\xff",我会得到:

root@kali:~# python3 -c 'print("\xff")' | xxd
00000000: c3bf 0a ...

\xff 被转换为 \xc3\xbf

但在 Python 2 中它按预期工作,如下所示:

root@kali:~# python -c 'print("\xff")' | xxd
00000000: ff0a ..

那么如何在 Python 3 中打印出来呢?

最佳答案

在 Python 2 中,print '\xff' 将字节字符串直接写入终端,因此您可以获得打印的字节。

在 Python 3 中,print('\xff') 使用默认编码将 Unicode 字符 U+00FF 编码到终端...在您的情况下为 UTF-8。

要在 Python 3 中直接将字节输出到终端,您不能使用 print,但您可以使用以下跳过编码并写入字节字符串:

python3 -c "import sys; sys.stdout.buffer.write(b'\xff')"

关于Python3 以奇怪的方式处理非 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56161774/

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