![](/img/trans.png)
[英]Intellij IDEA: Impossible to commit files: 'utf8' codec can't decode byte 0xcc in position 9
[英]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.