iOS 5:如何将表情符号转换为 unicode 字符?
我想在 iOS 5 中将 Emoji 转换为 unicode 字符
。例如转换 到\ue415
。
我去了 NSStringEncoding rel="noreferrer">NSString 类参考。
在 iOS 4 中,NSUTF16BigEndianStringEncoding
和 NSUTF32BigEndianStringEncoding
分别给了我
和 <0000e415>
,非常接近我想要的。
在 iOS 5 中,结果有所不同。它给出了
和 <0001f604>
。
如何在 iOS 5 中获取 的 \ue415
?谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
请尝试以下操作:
将表情符号转换为 unicode
非常容易将 unicode 转换为 Emoji
Please try this :
Convert Emoji to unicode
Very easy to convert unicode to Emoji
\ue415
是表情符号传统编码的一部分,特定于某些日本运营商。 SoftBank、NTT 和 docomo 都有自己的私有表情符号字符集。iOS 5 已转向新指定的表情符号字符平面 Unicode 6.0 支持,并且
<0001f604>
是该字符的 Unicode 代码点。有关此内容的维基百科条目引用了一个 EmojiSources.txt 映射文件,如果您确实需要获取旧的私人使用字符代码,则需要使用该文件自己进行映射。http://en.wikipedia.org/wiki/Emoji
\ue415
is part of the legacy encoding for emoji and is specific to certain Japanese carriers. SoftBank, NTT and docomo all had their own private emoji character sets.iOS 5 has moved to the newly specified Unicode 6.0 support for emoji character planes and
<0001f604>
is the Unicode code point for that character. The wikipedia entry about this references an EmojiSources.txt mapping file that you'll need to use to do the mapping yourself if you really need to get the old private-use character codes.http://en.wikipedia.org/wiki/Emoji
转换回:--
Convert back to:--
在 UILabel 中显示表情符号:
您应该小心地将
+
替换为 3 个0
数字dispalying emoji in UILabel:
you should be careful replace
+
with 3zero
digit试试这个:http://opensource.apple。 com/source/ICU/ICU-461.13/icuSources/data/translit/Any_SoftbankSMS.txt
在 iOS5 上,使用左侧代码,在 iOS 4 及更低版本上,使用正确的代码。
try this : http://opensource.apple.com/source/ICU/ICU-461.13/icuSources/data/translit/Any_SoftbankSMS.txt
on iOS5, use left code, on iOS 4 and below, use the right code.
如果你的表情符号不进行往返(从ios到后端服务器再返回ios),那么你不应该有任何问题ios(至少4.2+)正确处理编码,你不必这样做任何事物。但是如果你的应用程序与服务器交互,你是否怀疑你的服务器返回值是错误的?即json编码错误。
我遇到了同样的问题,经过几个小时的挖掘,终于找到了适合我的答案: https://stackoverflow.com/a/ 8339255/1090945
如果您使用 Rails 作为服务器,这就是您需要做的全部。无需在 ios/xcode 中执行任何操作,只需传递 NSString 即可,无需向服务器执行任何 UTF8/16 编码操作。
Postegre正确存储代码,只是当您将json响应发送回ios客户端时,假设您渲染json:@message,json编码有问题。
中执行简单的测试来测试您的 Rails 控制台中是否存在 json 编码问题,
您可以通过在控制台test.to_json
如果它打印出 "{\"smiley\":\"\uf604\"}" (注意 1 是丢失),那么你就会遇到这个问题。并且链接中的补丁将修复它。
if your emoji doesn't take a round trip (from ios to a backend server and back to ios), then you shouldn't have any problem ios (at least 4.2+) handles the encoding correctly and you don't have to do anything. but if your app interact with a server, have you suspect that your server return value is wrong? i.e. json encoded wrong.
I had the same problem, after digging for hours and finally found this answer that works for me: https://stackoverflow.com/a/8339255/1090945
If you are using rails as your server, this is all you need to do. No need to do anything in ios/xcode, just pass the NSString without doing any UTF8/16 encoding stuff to the server.
Postegre stores the code correctly, it's just when you send the json response back to your ios client, assuming you do render json:@message, the json encoding has problem.
you could test whether you are having json encoding problem in your rails console by doing as simple test in your console
test.to_json
if it prints out "{\"smiley\":\"\uf604\"}" (notice the 1 is lost), then you have this problem. and the patch from the link will fix it.