自定义函数: @Code ( character )

String Unicode

函数功能描述
将Unicode UTF-16编码转换为UTF-32编码,

相对于UTF-8 和 UTF-16, UTF-32是定长编码, 占用空间大, 但索引比变长的要快,你想访问一个字符串中的第 n 个字符,utf32 直接偏移 n 个整形距离即可,utf8 得从第一个字节一个字一个字地往后蹦

UTF-8 和 UTF-16/32 都各有优缺点,因此选择的时候应当立足于实际的应用场景。例如在我的习惯中,存储在磁盘上或进行网络交换时都会采用 UTF-8,而在程序内部进行处理时则转换为 UTF-16/32。对于大多数简单的程序来说,这样做既可以保证信息交换时容易实现相互兼容,同时在内部处理时会比较简单,性能也还算不错。

补充:
UTF 32 也不想理想中那么方便索引,主要是 emoji 的锅,举两个例子:一、Emoji 里面的国旗其实由两个字符组成,称为 region indicator,每个字符是一个 region indicator symbol letter,从 A 到 Z,U+1F1E6 到 U+1F1FF。比如说法国国旗就是用 FR 的对应 region indicator symbol letter 来表示的。Swift 的 String 自称有较好的 Unicode 支持,但对这样的字符的长度目前给的还是 2(Unicode 8.0 标准),而实际上 Unicode 9.0 已经要求把它们看作一个字符了。二、为了政治正确,人们引入了带肤色的 emoji 表情,它们是由普通表情和一个代表颜色的 emoji 字符组成。于是乎,如果写编辑器的话,不管怎么样都要 O(n) 来计算可见字符的长度的(这还没有考虑韩语那种三个字符叠成一个字符的情况)

链接:https://juejin.im/post/5a4aeae96fb9a04512394e12
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
调用范例
List ( Code ( "😀" ) ;
@Code ( "😀" ) )
返回结果
5683255357
128512

函数内容
当前页面使用FileMaker生成发布, 更新于2020年5月18日7时39分11秒

较旧的文章 较新的文章


留言