当前位置:   iOS > 正文

为什么表情符号有两个不同的utf-8代码?如何从utf-8转换表情符号,在ios中使用NSString?

unicode,utf-8,nsstring,ios,emoji,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我们发现了一个问题,一些表情符号有两个utf-8代码,例如:

emoji   unicode    utf-8                another utf-8
      U+1F601    \xf0\x9f\x98\x81     \xed\xa0\xbd\xed\xb8\x81

但是ios语言无法解码其他类型的utf-8,因此当我从utf-8解码字符串时会产生错误.

ios代码


在我找到的所有文档中,我只能为表情符号找到一种类型的utf-8代码,无处找到另一种代码.

我引用的文件包括:

表情符号代码链接

整个utf-8代码链接

但是在web工具bianma中,所有两种类型的utf-8代码都可以正确转换为表情符号.

输入代码

输出中


所以,我的问题是:

    为什么一个表情符号有两种类型的utf-8代码?

    哪个文件包含两种类型的utf-8代码?

    如何使用ios语言中的NSString正确转换utf-8中的字符串?

bobince.. 12

0xF0,0x9F,0x98,0x81

是否为U + 1F601的正确UTF-8编码.

0xED,0xA0,0xBD,0xED,0xB8,0x81

不是有效的UTF-8序列(*).它应该被拒绝; iOS是正确的.

这是bianma工具中的一个错误:该convertUtf8BytesToUnicodeCodePoints函数对于它接受的输入比例如RFC 3629中的指定算法更宽松.

这恰好返回一个工作字符串,因为该工具是用JavaScript编写的.已经解码的上述字节序列与伪代理码点序列U + D83D,U + DE01它然后转换该成JavaScript字符串使用直接码点到代码单元映射给予\uD83D\xDE01.由于这是以UTF-16字符串编码的正确方法,因此它似乎有效.

(*:它一个有效的CESU-8序列,但是这种编码只是"与编写错误的历史工具兼容的伪造破坏编码",通常应该避免.)

你不应该经常遇到这样的序列; 它通常不值得用餐,除非你有这种格式错误的数据的特定来源,你没有权力得到修复.



1> bobince..:

0xF0,0x9F,0x98,0x81

是否为U + 1F601的正确UTF-8编码.

0xED,0xA0,0xBD,0xED,0xB8,0x81

不是有效的UTF-8序列(*).它应该被拒绝; iOS是正确的.

这是bianma工具中的一个错误:该convertUtf8BytesToUnicodeCodePoints函数对于它接受的输入比例如RFC 3629中的指定算法更宽松.

这恰好返回一个工作字符串,因为该工具是用JavaScript编写的.已经解码的上述字节序列与伪代理码点序列U + D83D,U + DE01它然后转换该成JavaScript字符串使用直接码点到代码单元映射给予\uD83D\xDE01.由于这是以UTF-16字符串编码的正确方法,因此它似乎有效.

(*:它一个有效的CESU-8序列,但是这种编码只是"与编写错误的历史工具兼容的伪造破坏编码",通常应该避免.)

你不应该经常遇到这样的序列; 它通常不值得用餐,除非你有这种格式错误的数据的特定来源,你没有权力得到修复.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/iOS/detail/8518
推荐阅读
  • 如何解决《iOS:使用Swift2删除.DocumentDirectory中的文件》经验,为你挑选了1个好方法。uitableview,delete-file,ios,swift2,swift,objective-c,DevBox,在线流程... [详细]

  • 如何解决《使用braced-init列表调用显式构造函数:是否含糊不清?》经验,为你挑选了1个好方法。c++,gcc,language-lawyer,c++11,ios,程序员,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,... [详细]

  • 如何解决《如何在IOS键盘顶部的键盘上添加完成按钮?》经验,为你挑选了4个好方法。keyboard,objective-c,uikeyboard,ios,swift,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,j... [详细]

  • 如何解决《使用启动屏幕在通用应用程序中禁用对iPadPro的支持》经验,为你挑选了0个好方法。ipad,ios,launch-screen,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,u... [详细]

  • 如何解决《对于某些值,dateFromString返回nil》经验,为你挑选了1个好方法。nsdateformatter,ios,swift,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,... [详细]

  • 如何解决《iOS以编程方式取消TouchID身份验证对话框》经验,为你挑选了1个好方法。ios,touch-id,lua,xcode,swift,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生... [详细]

  • 如何解决《领域迁移不起作用》经验,为你挑选了1个好方法。realm,ios,swift2,swift,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工... [详细]

  • 如何解决《使用Swift中的UITextView属性自定义UIView的加载时间较慢》经验,为你挑选了1个好方法。performance,uitextview,custom-view,ios,swift,DevBox,在线流程图,编程,编程... [详细]

  • 如何解决《如何从我的应用程序中的UIWebView打开外部链接,但在Safari中?迅速》经验,为你挑选了1个好方法。safari,uiwebview,ios,swift,webview,DevBox,在线流程图,编程,编程问答,程序员,开... [详细]

  • 如何解决《WKWebView不会打开外部链接》经验,为你挑选了1个好方法。navigation,ios,web,wkwebview,webview,facebook,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,j... [详细]

  • 如何解决《确保调用移动构造函数》经验,为你挑选了0个好方法。c++,move,move-semantics,c++11,go,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix... [详细]

  • 如何解决《如何通过GCDWebServer在iOS上播放本地M3u8文件》经验,为你挑选了0个好方法。mpmovieplayercontroller,http-live-streaming,ios,avplayer,m3u8,DevBox,... [详细]

  • 如何解决《将最大宽度设置为约束》经验,为你挑选了1个好方法。constraints,ios,swift,ipad,iphone,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳... [详细]

  • 如何解决《iOS应用程序VIPER架构-有多少数据管理器?》经验,为你挑选了1个好方法。architecture,ios,viper-architecture,服务器,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,... [详细]

  • 如何解决《C++析构函数分段错误》经验,为你挑选了1个好方法。c++,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工... [详细]

  • 如何解决《使用video.js在iOS上内联播放视频?》经验,为你挑选了1个好方法。javascript,safari,html5-video,ios,video.js,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具... [详细]

  • 如何解决《如何将透明PNG图像与颜色合并》经验,为你挑选了1个好方法。objective-c,ipad,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,... [详细]

  • 如何解决《iOS蓝牙状态保存和恢复的DUPLICATEISSUE-25299》经验,为你挑选了0个好方法。bluetooth,duplicates,ios,core-bluetooth,state-restoration,DevBox,在线... [详细]

  • 如何解决《C++-成员初始化和增量的顺序》经验,为你挑选了1个好方法。c++,constructor,class,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线... [详细]

  • 如何解决《关于C++中的复制控制》经验,为你挑选了1个好方法。c++,constructor,ios,容器,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端... [详细]

相关标签
  

闽ICP备14008679号