繁体   English   中英

转换汉字时Java桥代码错误:'utf-8'编解码器无法解码位置0的字节0xc0:无效的起始字节

[英]Java bridge code error while converting chinese characters : 'utf-8' codec can't decode byte 0xc0 in position 0: invalid start byte

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

我们正在转向python,因此将这种编码逻辑更改为python。 由于python不支持等同于java编码Cp935的汉字编码,因此我们使用了javabridge代码,如下所示

 `
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空格)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM