获取unicode代码点的大写或小写(如uint32_t)

时间:2015-05-19 12:51:00

标签: c++ c string unicode utf-8

有没有办法获得给定unicode代码点(或等效的utf-8代码单元序列)的大写或小写字符?

我读到这可以用ICU来完成,但这是我唯一需要ICU的东西,所以我不想导入一个庞大的库(带有许可证和依赖项,如果有的话,对于一个特征。

我还读到大写和小写取决于语言环境。这究竟意味着什么?

感谢您的帮助。

PS:使用VS2005无法使用C ++ 11

1 个答案:

答案 0 :(得分:3)

ICU是正确的工具。案例折叠(多个符号代表相同“字母”的想法)在一般形式中是一个棘手的概念。

i的大写形式是什么?我们在哪个国家/地区以及我们撰写的语言是什么?英语有Ii对。土耳其语有两对:İi。所以它并不那么简单,并解释了“语言环境问题”的一部分。

另一个有趣的案例是德语ß的资本(英语中的Eszett或“sharp S”)。它的大写形式是两个字母SS。因此,没有承诺字符串的大写形式甚至会包含相同数量的字母。

可能有一些小型图书馆专注于案例折叠,但我不知道。通常要合理地做Unicode,你必须做很多Unicode。