我需要将字节插入到字符串中,因为我正在使用marshal Python模块序列化我的函数(因为我稍后会将它们插入到数据库中)。我需要一些方法通过MySQL查询传递字节,因为每当我尝试获取:
Query += "'" + value + "'"
TypeError: Can't convert 'bytes' object to str implicitly
所以,我需要知道该怎么做才能在查询变量中无误地传递它。
编辑:由于有人将其标记为副本,我不能简单地将其解码为utf-8,因为它包含utf8不支持的字符
最佳答案
如果要将任何字节转换为字符串,则不应使用utf8
而是使用支持256字节的字符集,如latin1或iso-8859-1。
下面是一个小测试:
a = bytes(range(256))
b = a.decode('latin1')
c = b.encode('latin1')
c == a
给出
True
因此,对于您的用例,您可以使用:
Query += "'" + value.decode('latin1') + "'"
作为参考,a给出
b'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f!“#$%&')*+,-./0123456789:;?@一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情。\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbc\xbd\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc7\xc7\xc8\xc9\xc9\xc9\xc9\xc9\xc9\xCxC\xC\xC\xC\xC\xXC\xxC\xd0\xd4\xd6\xd7\xd9\xd1\xd4\xd7\xd9\xd4\xd9\xd4\xd9\xd4\xd4\xd9\xd4\xd4\xd9\xd6\xd0\xd0\xd6\xd6\xd6\xd6\xd7\xd7\xd7\xd7\xd7\xd7\xd8\x8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
b给出:
'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f!'#$%&')*+,-./0123456789:;?@一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情,一见钟情。“××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××一ëìíîïðñòóôõö÷øùúûüýþÿ'