转义为iOS的Unicode字符
我想在我的应用程序中使用一些Unicode安排。 我有麻烦逃脱他们的使用。
比如这个Unicode序列:🅰
如果我使用在线工具转义它,我会得到:\ ud83c \ udd70
但是,这当然是每个编译器的无效序列:
var str = NSString.stringWithUTF8String("\ud83c\udd70")
另外,如果我这样做:
var str = NSString.stringWithUTF8String("\ud83c")
我收到一个错误“无效的Unicode标量”
我试图使用这些Unicode“字体”: http : //www.panix.com/~eli/unicode/convert.cgi? text= abcdefghijklmnopqrstuvwxyz
如果我查看这个网站的来源,我看到这样的序列:
𝕒
奋力围绕什么是“正确”的方式来处理/退出unicode。
只需要找出一种方法让他们在iOS上工作。
有什么想法吗?
Swift是一个早期的Beta版本,在很多方面都被打破了。 这个问题是一个Swift错误。
let ringAboveA: String = "\u0041\u030A" is Å and is accepted let negativeSquaredA: String = "\uD83D\uDD70" is 🅰 and produces an error
两者都是被Objective-C接受的分解的UTF16字符。 不同之处在于组合字符🅰在平面1中。
注意:要获得UTF32代码点,可以使用OSX字符查看器或代码片段:
NSLog(@"utf32: %@", [@"🅰" dataUsingEncoding:NSUTF32BigEndianStringEncoding]);
utf32:<0001f170>
要获取Apple菜单中的字符查看器,请转至“系统预置”,“键盘”,“键盘”选项卡,然后选中“在菜单栏中显示键盘和字符查看器”checkbox。 “angular色视图”项目将位于date左侧的菜单栏中。
input字符右(控制)后,点击collections夹中的字符复制search结果。
复制的信息:
🅰
负格拉丁大写字母A
Unicode:U + 1F170(U + D83C U + DD70),UTF-8:F0 9F 85 B0
更好的是:在左边的列表中添加unicode并select它。
\ud83c\udd70
是一个编码Unicode字符UT(U + 1F170)的UTF-16代理对。 Swiftstring文字不使用UTF-16,所以转义序列没有意义。 但是,由于1F170有五位数字,所以不能使用\uXXXX
转义序列(它只接受四个hex数字)。 相反,使用\UXXXXXXXX
序列(注意大写的U
),它接受八个:
var str = "\U0001F170" // returns "🅰"
您也可以将字符本身粘贴到您的string中:
var str = "🅰" // returns "🅰"