我有一个包含UTF-8字符的字符串,并且我有一个方法,可以将每个字符转换为大写或小写。对于与ASCII重叠的字符,这很容易实现,显然有些字符无法转换,例如任何中文字符。但是,是否有一种好的方法来检测和转换其他可大写/小写的字符,例如所有希腊字符?还请注意,我需要在Windows和Linux上都能够执行此操作。
谢谢!
谢谢!
请查看ICU。
请注意,大小写转换函数是与语言环境有关的。以土耳其(ASCII)字母I为例,它被转换成“没有点的小写i”,而(ASCII)字母i则被转换成“带点的大写I”。
towupeer()
函数及其类似的功能就是其中之一。 - Davislorstd::locale
对象,因为大写转换是与区域设置相关的。将每个UTF-8字符转换为wchar_t
,然后调用std::toupper()
,然后再转换回UTF-8。请注意,结果字符串可能会更长或更短,并且某些连字可能无法正常工作:ß到德语中的Ss就是每个人都提到的例子。ToUpper
方法。