在Python中将字符串编码为字节

时间:2016-04-25 15:19:23

标签: python encryption encoding

我一直在尝试通过从命令行获取输入(加密文本)并使用以下代码进行编码来对加密文本进行编码:

$scope.apply

输出:

# -*- 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

但是粗体括号仍然像字符串那样着色。

如何以字节为单位获取完全相同的字符串?

3 个答案:

答案 0 :(得分:0)

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

字符串的引用永远不会被关闭

答案 1 :(得分:0)

您正在逃避结束'

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

应该是:

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

答案 2 :(得分:0)

您提供的数据无法使用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编码字符串并不意味着你正在改变数据的完整性。