如何从UTF-8编码字符串中删除重音符号?有数百个答案要么使用某些库函数,要么使用转换表。UTF-8编码字符串的字符串长度
我正在寻找实际的算法(背后的想法和它为什么工作),而不是一个准备好使用的实现。
我的目标是计算一个UTF-8编码的字符串单个字符(这样,例如,utf8_strlen("Vypočítávání") = 12
。我想算长度的任何字符串,包括中国或者克林贡语。
我已经知道怎么算多字节字符:如果当前字节的最高位为1
,那么我就知道一些更多的字节将出席放眼未来几个字节,我可以告诉大家的是:
110xxxxx
意味着多了一个字节将会跟着,1110xxxx
另外两个,11110xxx
三。
(我们可以假设,该字符串正确编码,即序列是一个有效的UTF-8流。这意味着,这些字节实际上将遵循)
我读一个字节我知道有多少人会指定一个Unicode代码点,因此我可以跳过这些(再次,流有效)并相应地增加中间和。
我该如何做相同的字符组合?也就是说,有一个简单的方法来告诉代码点是否例如(如HACEK在č
在ç
或在中国任何奇怪的曲线或加符)口音? 如果有,那么我也期待跳过它们。
非常感谢!
是的,有一种简单的方法可以做到这一点。不幸的是,这种直接的方式不是一种算法,而是在作为Unicode标准一部分的大型数据表中查找表格。他们为每个代码点指定各种属性,包括您之后的代码。 – jalf
目前还不清楚你在问什么。标题与问题的内容不匹配。这个问题似乎意味着口音是通过结合字符呈现的,在大多数情况下,它们不是。处理字节在这里真的不相关。它在概念上和编程上处于完全不同的水平。你还没有定义一个字符串的长度。 –