C/C++的轻量级Unicode字符串库是否存在?

19
我正在寻找一个便于使用的、便携式的 C/C++ 字符串库,帮助我处理 Unicode 输入/输出。最好是将字符串存储在 UTF-8 编码的内存中,并允许我将字符串从 ASCII 转换为 UTF-8/UTF-16,反之亦然。除此之外我不需要太多功能(当然,宽松的许可证也很重要)。看到 C++ 自带了 <locale> 头文件,但这似乎只针对 wchar_t,而这种编码方式可能是 UTF-16,也可能不是,而且我也不确定它的实际效果如何。
例如,在 Windows 上,Unicode API 需要 UTF-16 字符串,因此我需要将 ASCII 或 UTF-8 字符串转换为 UTF-16 以传递给 API。XML 解析也是同样的情况,虽然其输入可能会是 UTF-16,但我只想在内部使用 UTF-8 来处理(或者如果我切换到 UTF-16 内部表示,那么我无论如何都需要转换)。
到目前为止,我已经看过了ICU,但这太庞大了。此外,它需要使用自己的项目文件来构建,而我更希望有一个可以使用 CMake 项目构建或者容易构建的库(比如编译所有这些 .c 文件,链接就好),而不是将庞大的 ICU 与我的应用程序一起打包。
您是否知道这样的库,而且还在维护中?毕竟,这似乎是一个非常基本的问题。
3个回答

22

有什么想法吗?我刚刚看了一下,似乎非常简单,但我想听听大家的意见。 - Anteru
4
好的,你不会从我这里听到任何公正的意见,因为我是作者 :) 然而,我已经有一年多没有发现任何明显的漏洞了,而且人们实际上正在使用它(每月250-300次下载),所以我相信它并不那么糟糕 :) - Nemanja Trifunovic
1
我非常推荐使用UTF8-CPP。在我的C++代码中,每当需要处理UTF8字符串(有时还包括utf16)时,我都会使用它。它非常易于使用,并且具有非常好的C++ API。 - Mārtiņš Možeiko
这个软件所使用的许可证需要花费数小时去查找,非常令人烦恼。这种情况应该在程序员直接查看的位置提到,以便他们不必浪费时间。如果库的编写方式相同,那么就不会想尝试它了... - Virus721
你好,我想知道你们的库是否在GitHub上可用?谢谢。 - Xam
1
@Xam。是的,链接就在我的回答中的第一个单词。 - Nemanja Trifunovic

3

1
iconv只能让您在不同字符编码之间进行转换。您无法获得像len()函数、大小写转换等功能。 - Steve Folly

0

还有另一个便携式的C库,用于在UTF-8、UTF-16、UTF-32和wchar之间进行字符串转换 - mdz_unicode库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接