gpt4 book ai didi

转换中文字符时Java桥代码错误: 'utf-8' codec can't decode byte 0xc0 in position 0: invalid start byte

转载 作者:太空宇宙 更新时间:2023-11-04 10:41:38 25 4
gpt4 key购买 nike

我们正在以不同的编码格式接收数据,目前我们正在使用下面提到的java编码 https://docs.oracle.com/javase/1.5.0/docs/guide/intl/encoding.doc.html

我们正在转向 python,因此将此编码逻辑更改为 python。由于python不支持汉字编码,这相当于我们使用的java编码Cp935javabridge代码如下

 `
class String:
new_fn = javabridge.make_new("java/lang/String", "([BLjava/lang/String;)V")
def __init__(self, i, s):
self.new_fn(i, s)
toString = javabridge.make_method("toString", "()Ljava/lang/String;", "Retrieve the string value")

array = numpy.array(list(fielddata) , numpy.uint16)
strobject = String(array,encoding)
convertedstr = strobject.toString() `

但是我们收到错误

<小时/>

“utf-8”编解码器无法解码位置 0 中的字节 0xc0:起始字节无效

<小时/>

寻找帮助或在 python 中执行此操作的替代方法。

最佳答案

class JavaEncoder:
# creating new method for java bridge
new_fn = javabridge.make_new("java/lang/String", "([BLjava/lang/String;)V")

def __init__(self, i, s):

i[i == 0] = 64
self.new_fn(i, s)

# creating toString method of JAVA
toString = javabridge.make_method("toString", "()Ljava/lang/String;", "Retrieve the integer value")

在使用 JAVABRIDGE 转换数据时,如果字段大小为 1 并且数据包含 00,则 numpy.uint8 将其转换为 0,将其视为整数,因此,在转换数据时,我们会遇到编码错误,以避免这种情况,我们在上面添加了代码 64 是 uint8 中的空格(40 EBCDIC/20 ASCII 空格)。

关于转换中文字符时Java桥代码错误: 'utf-8' codec can't decode byte 0xc0 in position 0: invalid start byte,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48906447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com