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

我们正在接收不同编码格式的数据,目前我们正在使用以下提到的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空格)。

“ new”语句之后的花括号有什么作用? - java

我在查看this example并想知道第一行的作用:private SiteStreamsListener listener = new SiteStreamsListener() { 看起来您可以以这种方式声明其他方法或重写方法。例如,我可以做以下事情吗?ArrayList myList = new ArrayList() { @Override Str…

“ finally”子句在异常处理中的好处 - java

作为对此的新手,在异常处理中使用finally子句有什么好处。换句话说,什么时候最好使用它,什么时候最好不要使用它。我唯一想到的就是关闭输入/输出流……还有其他好处? 参考方案 StinePike撰写的任何内容都很完美,但我想在其中添加一些内容。无论是否发生异常,都将执行finally块...。因此,我们可以通过在try块以及catch block()中写入…

为什么新的FileWriter(“ abc.txt”)创建一个新文件而新的File(“ abc.txt”)却没有? - java

new File("abc.txt")不会创建实际文件,而new FileWriter("abc.txt")会在磁盘上创建文件。在查看源代码时,我发现new FileWriter("abc.txt")最终创建了一个文件,如new File() 参考方案 类java.io.File的构造方法不会在磁盘…

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…