python - 在 Python 3 中编码字符串而不使用 unicode\xc2 替换

标签 python string unicode decode encode

所以我正在编写一些代码,用于与 pySerial 的硬件进行通信,我使用的是 python 2.7.7,一切正常,我切换到 python 3.4,因为我在安装 GUI“框架”时遇到问题。

所以我遇到的问题是我必须对发送到 COM 端口的字符串进行编码和解码,在 Python 2.7.7 上我不需要这样做

这是字符串,我知道十六进制值 81 不是 ascii,但我需要按照 python 2.7.7 中发送的方式发送字符串。

str = '\x1B\x81'

当我打印 str 时,我得到这个:

b'\x1b\xc2\x81'

我假设\xc2 是我的\x81 的一些特殊 unicode 字符,我知道\x 是十六进制的转义字符,我不太确定 Python 2.7.7 如何将字符串写入串行端口。

这行:

ser.write('\x1B\x81')

发送二进制到串口?像这样:

ser.write('0001 1011 1000 0001')

如果我发送这个:

ser.write('\x1B\x81')

对于使用 Python 3 的硬件,硬件只是挂起并且不执行任何操作,但在 Python 2.7 中它可以工作。

最佳答案

Python 2.7 中的值 obj = '\x1B\x81' 在 Python 3 中将是 obj = b'\x1B\x81'

Python 3 中的值 '\x1B\x81' 是文本,因此您不会将二进制发送到硬件(这就是 Python 2 中所谓的 Unicode 字符串)。

关于python - 在 Python 3 中编码字符串而不使用 unicode\xc2 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29884543/

相关文章:

string - 在字符串中插入空格 (Matlab)

python - 根据需要在字符串之间添加文本

mysql - 无法在 mysql 中插入 unicode 字形

python - 解析词结构的正则表达式

python - 绘制 NetworkX Girvan-Newman 算法找到的社区的树状图

C++ 字符串附加格式化数据

python - Argon2 库,可以在没有 secret 的情况下对密码进行哈希处理,并且使用看起来不可解析的随机盐

python - 当我使用 Windows 键盘键入非 ASCII 字符时,我得到 "?"

python - 处理以换行符结尾的套接字数据

python - 对 Python 中的字节感到困惑