繁体   English   中英

在Python 3中,如何在没有编码/解码的情况下将ascii转换为字符串

[英]In Python 3, how can I convert ascii to string, *without encoding/decoding*

Python 3.6

我将字符串从utf8转换为此:

b'\\ xe6 \\ x88 \\ x91 \\ xe6 \\ xb2 \\ xa1 \\ xe6 \\ x9c \\ x89 \\ xe7 \\ x94 \\ xb5@xn--ssdcsrs-2e1xt16k.com.au'

我现在希望将ascii块换回字符串形式,因此开头不再有小b字节。

但是我不希望它转换回UTF8,我想要上面在Python字符串中使用的相同字符序列。

我该怎么办? 我所能找到的是将字节转换为字符串以及编码或解码的方法。

(错误的)答案很简单:

chr(asciiCode)

在您的特殊情况下:

myString = ""
for char in b'\xe6\x88\x91\xe6\xb2\xa1\xe6\x9c\x89\xe7\x94\xb5@xn--ssdcsrs-2e1xt16k.com.au':
    myString+=chr(char)
print(myString)

给出:

æ没æçµ@xn--ssdcsrs-2e1xt16k.com.au

也许您也对正确的答案感兴趣? 它可能不会令您满意,因为它说您始终可以处理编码/解码...因为myString现在同时是UTF-8和ASCII(与您将其“转换”为之前完全一样) ASCII)。

请注意,如何myString出现在你打印将取决于隐含的编码/解码使用的print

换一种说法 ...

没有办法避免编码/解码

但是有一种方法可以做到这一点。

我想这里提供了我的答案: 将UTF-8(按字面值)转换为Umlaute将有助于您理解整个编码/解码内容。

您所拥有的没有ASCII,因为它包含例如字节\\xe6 ,它高于127。它仍然是UTF8。

字符串的表示形式 (以'b'开头,然后是' ,然后是'\\',...), ASCII。 您可以通过repr(yourstring)获得它。 但是您要打印的字符串的内容是UTF8。

但是我认为您不需要将其转换为UTF8字符串,但是它可能取决于其余的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM