我在VC++ MFC中将Unicode字符转换为小写字母时遇到问题。我在CString Variable.so中有Unicode字符,英语MakeLower()工作正常,我得到了小写字母。但它不能将Unicode字符转换为小写字母。我尝试了STL算法转换:
std::string data =“默认值";//Bulgerian chars
std::transform(data.开始(),data.end(),data.开始(),::tolower);
但它无法加载Unicode字符,我得到“?"?”符号代替unicode字符。
你能让我知道是否有解决unicode字符的方法吗?我不喜欢使用boost库。提前感谢!
3条答案
按热度按时间vql8enpb1#
如果您的项目使用Unicode字符集(项目属性),
CString::MakeLower()
应该可以工作-注意,这不会转换字符串的内容,它返回一个新的字符串,请参阅this MSDN article:EDIT:CString::MakeLower()确实改变了字符串的内容,它还返回了对转换后的字符串的引用
qhhrdooz2#
尝试
xeufq47z3#
我在IDN2 documentation中找不到 lower 这个词,但注意到域名被转换为lower。看看这个C代码段:
它需要一些花哨的字符,如hwair,但不是简单的 °: