【问题标题】:How to convert char[] to UTF8 to avoid illegal continuation byte error in JNI如何将 char[] 转换为 UTF8 以避免 JNI 中的非法延续字节错误
【发布时间】:2011-07-26 08:58:27
【问题描述】:

使用 JNI,我将值从文件传递到 java。 但是有时会发生此错误/警告:

JNI WARNING: illegal continuation byte 0xc0
             string: '���������������������'
              in Lcom/package/project/parser;.getSong (Lcom/package/project/vo/songVo;Ljava/lang/String;)I (NewStringUTF)

我读到在某些情况下获取的字符串不是 UTF8,如果是这样,我如何转换并将解析的 char[] 传递给字符串以避免再次出现此错误/警告?

【问题讨论】:

  • 你知道数据的实际编码是什么吗?
  • 文件可能有不同的编码,最好期待因为我正在解析来自不同来源的文件,所以它可能有特殊字符等......我读过这个(@987654321 @),但是我如何“先将此字符串转换为 UTF8(又名“多字节”),然后调用 NewStringUTF()。”...?
  • 所以它可能是 any 编码,而您实际上并不知道?您是否需要将这些数据作为String 处理?
  • 是的,Jstring 然后将其作为 String 添加到对象类中。现在我像这样传递 Jstring: (*env)->SetObjectField(env, allValues, fieldTitle, (*env)->NewStringUTF(env, song->header->title));
  • @IsisBlack 让我们continue this discussion in chat

标签: string encoding utf-8 java-native-interface bytearray


【解决方案1】:

那是因为您的 char[] 不是有效的修改后的 utf8,请检查一下。

Unicode const char* to JString using JNI and C++

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2012-07-17
    • 2020-06-20
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    相关资源
    最近更新 更多