正确处理UTF8字符串连接

问题描述:

我刚刚得知it's OK for a Unicode string to contain isolated combining characters正确处理UTF8字符串连接

这引发了另一个问题,相对于以这些字符开头的字符串的连接。

我正在开发一个UTF8String对象,以使UTF-8字符串处理更容易。

该对象有一个concat()方法,它将另一个字符串连接到当前字符串。

如果第二个字符串组合字符开始,我应该添加非打破空间的两个字符串之间,以避免组合第二串之前分离的第一个字符,到第一个字符串的最后一个字符?

或者预计会发生组合吗?

+1

你怎么得到分解文本在字符串中的第一位?代码中某处可能存在'strLetter + strDiacritic'表达式,在这种情况下,添加NBSP是不正确的。 – dan04

+2

应该可以通过组合独立的基本字符和组合字符来建立Unicode字符串。我会为一个不允许我这么做的字符串类感到惊讶。 –

+3

推测图书馆用户的意图是一个相当糟糕的主意。 98%的时间随机添加空格是错误的。 2%的时间不添加它们可能是错误的,但图书馆用户可以自己轻松修复。尽量避免重新发明这个*,至少看看ICU如何做。 –

我正在开发一个UTF8String对象,以使UTF-8字符串处理更容易。 [...]我应该在两个字符串之间添加一个不间断的空格吗?

我会说绝对不是。像处理字形边界一样,处理像UTF-8这样的字节编码是一个单独的,较低层次的问题。将这两个问题混合在一起将是一个意外的,不受欢迎的分层违规。

如果你想建立一个字符串类,将字形集群视为不可分割的单位,这很好,但这是一个不同的动物(并且需要做很多工作来保持一致)。