java - 如何从 C/C++ 在 JNI for Java 中创建 UTF16 字符串?
问题描述
我有一个带有笑脸的 C/C++ char* 字符串,但其余内容是 ASCII 格式。例如,Hello World。
当我尝试使用NewStringUTF和NewString在 JNI 中创建 Java 字符串时,行为未定义。
创建Java字符串的正确方法是什么?
解决方案
我所拥有的char*指向真正的 UTF-8数据,而不是修改后的 UTF-8数据。因此,我先将字符串转换为 UTF-16,然后使用NewString生成 Java 字符串。为了将 UTF-8 转换为 UTF-16,我使用了这个库。
string line = myStringWithSmiley;
u16string utf16line = utf8::utf8to16(line);
return env->NewString((const jchar*)(utf16line.c_str()), utf16line.length());
推荐阅读
- python - Fetch non-empty cells from .xls file using pandas
- python - win10上的tensorflow-gpu安装问题
- javascript - 为什么 .charCodeAt() 不能确保您可以在此 Javascript 算法中找到丢失的字母?
- javascript - react中的自定义排序
- talend - Talend - 如何禁用检查额外功能?
- python - 无法通过烧瓶从 MySQL 检索数据
- java - AST 视图:Eclipse 插件不显示 ATS 的节点并显示不支持的 JLS
- tensorflow - 当我在 jupyter 中导入 tensorflow 时弹出以下错误
- powerbi - Power Query 或 Power BI - 如果单元格为空白,则从所述单元格上方最近的行中复制值
- json - 如何仅在响应中的 onclick 事件后映射 json 列表?