簡體   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