3

我正在尝试将 UTF-8 字符串转换为 UCS-2 字符串。我需要得到像“\uFF0D\uFF0D\u6211\u7684\u4E0A\u7F51\u4E3B\u9875”这样的字符串。到目前为止,我已经用谷歌搜索了大约一个月,但仍然没有关于将 UTF-8 转换为 UCS-2 的参考。请有人帮助我。提前谢谢。

编辑:好吧,也许我的解释不够好。这是我想要做的。我住在韩国,我正在尝试使用 CTMessageCenter 发送短信。我试图通过我的应用程序发送简体中文。我得到了????而不是正确的字符。所以我也尝试了 UTF-8、UTF-16、BE 和 LE。但是他们都回来了???。最后我发现 SMS 在韩国使用 UCS-2 和 EUC-KR 编码。很奇怪,不是吗?无论如何,我尝试发送像 \u4E3B\u9875 这样的字符串并且它有效。所以我需要先将字符串转换为 UCS-2 编码,然后从这些字符串中获取字符串文字。

4

2 回答 2

2

维基百科

较旧的 UCS-2(2 字节通用字符集)是一种类似的字符编码,在 1996 年 7 月的 Unicode 标准 2.0 版中被 UTF-16 取代。2 它通过简单地使用代码点来生成固定长度格式作为 16 位代码单元,对于 0-0xFFFF 范围内的所有代码点的 96.9% 产生与 UTF-16 完全相同的结果,包括当时已分配值的所有字符。

IBM

由于 UCS-2 标准限制为 65,535 个字符,而数据处理行业需要超过 94,000 个字符,因此 UCS-2 标准正在被 Unicode UTF-16 标准取代。

但是,由于 UTF-16 是现有 UCS-2 标准的超集,因此只要您的应用程序将 UCS-2 视为 UTF-16,您就可以使用现有 UCS-2 支持的系统开发您的应用程序。

uincode.org

UCS-2 是过时的术语,指的是 Unicode 1.1 之前的 Unicode 实现,在代理代码点和 UTF-16 被添加到标准的 2.0 版之前。现在应该避免这个词。

UCS-2 没有定义不同的数据格式,因为 UTF-16 和 UCS-2 在数据交换方面是相同的。两者都是 16 位的,并且具有完全相同的代码单元表示。

因此,在大多数语言库中使用“UTF8toUnicode”转换将产生 UTF-16,它本质上是 UCS-2。并且简单地从 Objective-C 字符串中提取 16 位字符将完成同样的事情。

换句话说,解决方案一直盯着你。

于 2011-08-07T03:04:15.667 回答
0

UCS-2 不是有效的 Unicode 编码。UTF-8 是。

因此,将 UTF-8 转换为 UCS-2 是不可能的——事实上,反之亦然。

UCS-2 已死,历史悠久。让它安静地腐烂。

于 2011-08-06T15:09:37.483 回答