我们正在向具有大型代码库的现有应用程序添加对 UTF8 的支持。此应用程序使用boost::format()
,并且非 ASCII 字符的输出未正确对齐。具体来说,当使用%{width}.{length}
s 说明符时,boost::format()
计算字符数,这不会对 utf8 字符串“做正确的事”。我认为应该可以根据...更改要使用的字符串长度代码(可能是 string::size()
)utf8len()
或类似的东西?
在这种情况下,将现有代码库更改为使用 UCS2(或 UCS4,或 UTF-16 等)是不切实际的,但boost::format()
如果需要,可以进行修改。我希望其他人已经遇到了这种需求,并且可以为我指出一个可能的解决方案。
注意:我发现了一些关于将语言环境与 utf8 结合使用的网页,但其中大部分似乎更适用于在流中转换为 utf8 和 UCS4。