我已经看到了一些非常聪明的代码,可以在Unicode代码点和UTF-8之间进行转换,所以我想知道是否有人(或喜欢设计)这个代码。
具体来说,我想知道是否存在一些捷径,可以在不将UTF-8序列完全转换为代码点的情况下何时需要一个代理对。
我见过的最好的UTF-8编码点代码使用矢量化技术,所以我想知道在这里是否也可行。
效率始终是速度与尺寸之间的权衡。如果速度优先于大小,那么最有效的方法就是根据源字符串的长度进行猜测。
有4种情况需要考虑,只需将最坏的情况作为最终缓冲区大小即可:
最糟糕的情况是扩展因子是将U + 0000-U + 007f从utf8转换为utf16时:按字节缓冲区的大小只必须是源字符串的两倍。将其他Unicode代码点编码为utf16或utf8时,其大小相等或字节分配较小。