【问题标题】:Convert JNI UTF-16 string to standard C++ UTF-8 string将 JNI UTF-16 字符串转换为标准 C++ UTF-8 字符串
【发布时间】:2014-02-05 18:54:21
【问题描述】:

我需要将 UTF-16 字符串转换为 UTF-8 字符串。

const unsigned short *utf16string = ...;
const char *utf8string = convertUTF16toUTF8(utf16string);

谁能帮我找到/编写函数const char* convertUTF16toUTF8(const unsigned short* utf16string)

不幸的是,类型无法更改,而且我无权访问 C++11。我已经为此苦苦思索了好几个小时,但找不到任何解决方案。

请帮助我。我相信你,StackOverflow!

附:如果有人需要知道,我正在使用 cocos2d-x 制作游戏,并且正在尝试使用 JNI 回调获取字符串。 JNI 有 GetString... 函数的 UTF 版本,但根据我自己的经验和 Wikipedia,这些都是错误的,所以我需要使用原始函数转换字符串。

【问题讨论】:

  • 你在什么环境?操作系统中可能已经有一个功能。但否则我只会从 UTF-16 字符串中一次读取一个代码点 - 可能超过两个短裤 - 然后将其写为 UTF-8 字符,然后重复。要提前分配缓冲区,您可能会猜到它的大小与 UTF-16 相同或更短,然后在达到限制时重新分配。
  • 此代码正在 Android 上使用。
  • 正如我在问题中提到的,我无权访问它:(
  • 这个问题和你的问题有关吗?它有帮助吗? - stackoverflow.com/questions/2867123/…

标签: c++ utf-8 utf-16 utf


【解决方案1】:

如果您想要一个简单而小型的 C++ 库,您可以使用 UTF8-CPP 在 UTF-8 和 UTF-16 之间进行转换。

【讨论】:

    猜你喜欢
    • 2011-09-06
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 2012-03-30
    • 1970-01-01
    相关资源
    最近更新 更多