Unicode 字符串转字节 python 3
Unicode string to bytes python 3
我有一个 Unicode 字符串
my_string = 'SGtjPQ\u003d\u003d' 和字典(2 个反斜杠)
data = {'key': my_string}
我需要提供 json-以字节为单位的响应,所以我执行以下操作
response = json.dumps(data)
return response.encode()
最终得到了这个结果
b'{"key": "SGtjPQ\\u003d\\u003d"}'(4 个反斜杠)。但我希望响应中的 my_string 完全保持原样(带有 2 个反斜杠)。如何防止这种自动转义并获得结果 b'{"key": "SGtjPQ\u003d\u003d"}'
JSON 字符串中的反斜杠是转义字符,它本身需要转义。 "\"
在 JSON 中 表示 一个反斜杠。您得到的四个反斜杠是表示两个反斜杠的正确 JSON 语法。
如果您想要它有任何不同,您应该在 JSON 编码之前整理好您的字符串。不要写转义的 JSON 字面量语法,写下你想要的字符并让 JSON 为你正确编码。
我不确定您为什么决定在代码 u003d 前面的 python 字符串中放置两个反斜杠。使用数字代码指定 unicode 字符的语法仅使用一个斜杠。像这样:"SGtjPQ\u003d\u003d"
现在,回答您关于为什么在显示的字符串中出现 4 个斜杠的问题。这个inflation个反斜杠是正常的:
my_string
在内存中 -> 只有一个斜杠
使用 Python 字符串语法表示 my_string
-> 两个反斜杠
my_string
在 json 中的表示 -> 两个反斜杠
my_string
的 json 表示(对字符串使用 Python 语法)-> 4 个反斜杠
所以最终结果中有 4 个反斜杠,因为斜杠首先被 JSON 编码转义,然后两个结果斜杠被 python 解释器的显示转义,它使用字符串的 Python 语法显示字符串。
我有一个 Unicode 字符串 my_string = 'SGtjPQ\u003d\u003d' 和字典(2 个反斜杠)
data = {'key': my_string}
我需要提供 json-以字节为单位的响应,所以我执行以下操作
response = json.dumps(data)
return response.encode()
最终得到了这个结果 b'{"key": "SGtjPQ\\u003d\\u003d"}'(4 个反斜杠)。但我希望响应中的 my_string 完全保持原样(带有 2 个反斜杠)。如何防止这种自动转义并获得结果 b'{"key": "SGtjPQ\u003d\u003d"}'
JSON 字符串中的反斜杠是转义字符,它本身需要转义。 "\"
在 JSON 中 表示 一个反斜杠。您得到的四个反斜杠是表示两个反斜杠的正确 JSON 语法。
如果您想要它有任何不同,您应该在 JSON 编码之前整理好您的字符串。不要写转义的 JSON 字面量语法,写下你想要的字符并让 JSON 为你正确编码。
我不确定您为什么决定在代码 u003d 前面的 python 字符串中放置两个反斜杠。使用数字代码指定 unicode 字符的语法仅使用一个斜杠。像这样:"SGtjPQ\u003d\u003d"
现在,回答您关于为什么在显示的字符串中出现 4 个斜杠的问题。这个inflation个反斜杠是正常的:
my_string
在内存中 -> 只有一个斜杠
使用 Python 字符串语法表示 my_string
-> 两个反斜杠
my_string
在 json 中的表示 -> 两个反斜杠
my_string
的 json 表示(对字符串使用 Python 语法)-> 4 个反斜杠
所以最终结果中有 4 个反斜杠,因为斜杠首先被 JSON 编码转义,然后两个结果斜杠被 python 解释器的显示转义,它使用字符串的 Python 语法显示字符串。