通过从命令行获取输入(加密文本)并使用以下代码进行编码,我一直试图对加密文本进行编码:
# -*- coding: utf-8 -*-
import sys
a = sys.argv[1]
b = a.encode('utf-8')
print(a)
print('\n')
print(b)产出:
$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)产出:
$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('\\\','\')
但是,粗体中的括号仍然是与字符串一样的颜色。
如何才能得到完全相同的字符串(以字节为单位)?
发布于 2016-04-25 15:37:02
“是转义单引号。是一个转义反斜杠字符。
字符串的引号从未关闭。
发布于 2016-04-25 15:56:25
您正在转义关闭的'
b = a.encode('utf-8').replace('\\','\')应:
b = a.encode('utf-8').replace('\\','\'')发布于 2016-04-25 15:58:06
您提供的数据不能用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对字符串进行编码并不意味着要更改数据的完整性。
https://stackoverflow.com/questions/36844688
复制相似问题