【发布时间】: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/…