是否有关于最先进的UTF-8验证器/解码器的论文。我已经看到了“在野外”的实现,它们使用聪明的循环,在常见情况下每次迭代最多可处理8个字节(例如,所有7位ASCII输入)。
答案 0 :(得分:0)
我不了解论文,它可能有点过于具体,缩小了严格科学分析的主题,而是一个工程问题。您可以从查看如何处理不同的库开始。一些解决方案将使用特定语言的技巧,而其他解决方案则非常通用。对于Java,您可以从UTF8ByteBufferReader的代码开始,Javolution的一部分。我发现这比语言中内置的字符集转换器快得多。我相信(但我不确定)后者为许多编码和特定于编码的数据文件使用了一段共同的代码。相比之下,Javolution具有专为UTF-8设计的代码。
还有一些用于特定任务的技术,例如,如果您只需要计算UTF-8字符在解析文本时占用的字节数,您可以使用由第一个索引的256个值的表UTF-8编码字符的字节,这种跳过字符或计算字符串字符长度的方式比使用位操作和条件快得多。
对于某些情况,例如如果你可以浪费一些内存,如果你现在遇到的大多数字符都来自Basic Multilingual Plane,你可以尝试更积极的查找表,例如首先通过上述方法计算长度,如果是1或者2个字节(也许3个也有意义),在表格中查找已解码的字符。但是,请记住,对这个以及您尝试的任何其他算法进行基准测试,因为它根本不需要更快(位操作非常快,并且使用大的查找表,您会忽略参考位置加上偏移计算并非完全免费,任一)。
无论如何,我建议您先查看Javolution代码或其他类似的库。