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字符串中使用与上面相同的字符序列。
我该怎么办?我能找到的就是将字节转换为字符串以及编码或解码的方法。
答案 0 :(得分:1)
(错误的)答案非常简单:
<强> 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(与您之前的情况完全相同;#34;转换为#34;它转换为ASCII)。
请注意,myString
在打印时的显示方式取决于print
使用的隐式编码/解码。
换句话说......
没有办法避免编码/解码
但是有一种方法可以采用一种不明确的方式。
我想在这里阅读我的答案:Converting UTF-8 (in literal) to Umlaute将帮助您理解整个编码/解码事件。
答案 1 :(得分:0)
你所拥有的不是ASCII,因为它包含例如字节\xe6
,它高于127.它仍然是UTF8。
字符串的表示(开头是'b'
,然后是'
,然后是'\',...),那个是ASCII。你可以通过repr(yourstring)
获得它。但是您打印的字符串的内容是UTF8。
但我认为您不需要将其转换回UTF8字符串,但这可能取决于您的其余代码。