有什么适用于C++ UTF-8/UTF-16文本编码的小型LGPL库?

3

需要一些小巧便携的东西。目前正在考虑UTF8-CPP,但想寻求其他建议。

谢谢。


2
你需要做什么?UTF8和UTF16的基本编码和解码可以用几行代码实现。 - Kerrek SB
2
已经有一些相关问题被讨论过了:https://dev59.com/TXVC5IYBdhLWcg3w51ry https://dev59.com/N3E85IYBdhLWcg3wQxLG - Mark Ransom
通过快速的回答和参考资料,UTF8-CPP 仍然是胜者。它很小(只有三个头文件,全部为内联代码),并且具有开放许可证,允许任何人进行修改和再分发。 - sparkFinder
这需要可移植吗?大多数操作系统都有非可移植的字符集转换例程可供使用。 - bdonlan
4个回答

2
UTF-8CPP,只是想标记这个问题已经完成了。感谢大家的帮助 :)

1

ICU是“国际Unicode组件”-便携且开源的。

我自己没有使用过它,所以无法说它有多好,但我知道其他人在使用它。


3
它是一个很好的库,几乎可以胜任所有任务,但二进制文件大小较大。 ICU 编译后本身就已经有约 16MB 大小! - Billy ONeal
@Billy:这主要是来自数据库的内容。可以根据需要进行定制,以进一步改善其占用空间大小:http://userguide.icu-project.org/icudata#TOC-Reducing-the-Size-of-ICU-s-Data:-Co - Void
ICU确实太大了(由IBM维护,用于巨型项目)。 - sparkFinder
@Void:是的,我并不是对这个库有太多抱怨。但对于大部分必须保持总大小在500k以下的应用程序(我要支持拨号用户),它的体积就变得不可接受了。这是一个很棒的库,只是通常比我需要的要大。 - Billy ONeal
@Billy:哎呀!现在处理这样的最大尺寸真是够棘手的。我同意你的看法。它确实很大,而且通常还要进行数据库占用空间优化。 - Void


-2

1
setlocalembstowcs 是完全 编码无关 的!这里是我对此问题的一点抱怨 - Kerrek SB
sparkFinder - 如果 UTF8-CPP 对你有效,那很好!否则,我强烈建议你考虑包装 setlocale() 和相关函数。这显然不是这里的时髦做法 - 但它有效。而且效果很好 :) - paulsm4
@paulsm4:不,它不起作用。 mbstowcs不能告诉你使用的编码(实际上也没有更改编码的方法)。如果您在可以确保wcstombs和mbstowcs之间转换UTF-8和UTF-16的平台上,那就很好了。但这并不是99%的平台。肯定不包括Windows或POSIX盒子。 - Billy ONeal

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