编码字符串字节在Python

问题描述:

我一直在试图通过利用从命令行和编码输入(加密文本),使用下面的代码的加密文本进行编码:编码字符串字节在Python

# -*- coding: utf-8 -*- 
import sys 
a = sys.argv[1] 
b = a.encode('utf-8') 
print(a) 
print('\n') 
print(b) 

OUTPUT:

$python3 test.py 'b\x90\x89\xc6g\xa6\x15I\x9bKD\xd4s\xf2\x9f\x82Y\xedaa}0wL' 

b\x90\x89\xc6g\xa6\x15I\x9bKD\xd4s\xf2\x9f\x82Y\xedaa}0wL 

b'b\\x90\\x89\\xc6g\\xa6\\x15I\\x9bKD\\xd4s\\xf2\\x9f\\x82Y\\xedaa}0wL' 

我需要完全相同的输出,我从终端输入的只是字节来执行解密操作。当我尝试通过下面的代码来代替它:

# -*- coding: utf-8 -*- 
import sys 
a = sys.argv[1] 
b = a.encode('utf-8').replace('\\','\') 
print(a) 
print('\n') 
print(b) 

OUTPUT:

$python3 test.py 'b\x90\x89\xc6g\xa6\x15I\x9bKD\xd4s\xf2\x9f\x82Y\xedaa}0wL' 

File "testsys.py", line 6 
    b = a.encode('utf-8').replace('\\','\') 
            ^
SyntaxError: EOL while scanning string literal 

我不知道该错误,但在该行:

b = a.encode().replace('\\\','\'

但粗体的圆括号仍然有颜色,如字符串

如何才能获得完全相同的字符串只是以字节为单位?

+0

我使用python3 –

\'是一个逃脱的单引号字符。 \\是一个转义反斜线字符。

的字符串从来没有得到封闭

+0

是但如何解决呢? –

你逃避关闭的报价'

b = a.encode('utf-8').replace('\\','\') 

应该是:

b = a.encode('utf-8').replace('\\','\'') 
+0

TypeError:预期字节,bytearray或缓冲区兼容对象 –

您提供的数据不能与UTF-8编码。

a = 'b\x90\x89\xc6g\xa6\x15I\x9bKD\xd4s\xf2\x9f\x82Y\xedaa}0wL' 
>>> b = a.encode('utf-8') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
UnicodeDecodeError: 'ascii' codec can't decode byte 0x90 in position 1: ordinal 
not in range(128) 

如果它真的对你有效,你检查解密编码的字符串,你得到了不同于原始字符串的答案。因为通过utf-8编码字符串并不意味着你正在改变数据的完整性。

+0

是的代码在python解释器上正常工作 –