注册

dmPython生僻字导致的编码报错如何处理

DM_659187 2024/08/28 424 3 已解决

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】: V8 24.06.21
【操作系统】: WINDOWS 11
【CPU】: AMD Ryzen 7 5800H
【问题描述】*:
dmPython 2.5.5
使用的数据库连接池 dmPython.cp312-win_amd64.pyd

我们在尝试使用python来做原型时遇到了一个问题,录入的数据中存在生僻字 䶮 ,通过报错如下:

实现伪代码如下
data_values = '䶮'
data_values = data_values.astype(str).str.encode('GB18030').str.decode('GB18030')
cursor = conn.cursor()
sql = f"insert into {tablename} values {data_values}"
cursor.execute(sql)
conn.commit()

执行时会报错:
'gbk' codec can't encode character '\u4dae' in position 38: illegal multibyte sequence

我确认了一下,库的编码是GB18030,源数据是UTF8,两个编码都有这个字,并且我们直接在数据库中insert into '䶮' 这个字时也能正常入库。
但是通过代码入库时就会报错。我们也转换了录入的文本格式,是不是JDBC这边还会强转回GBK?请问这个情况要怎么处理?

回答 0
暂无回答
扫一扫
联系客服