【发布时间】:2015-02-23 04:39:07
【问题描述】:
在过去的几个小时里,我试图在我的 CListCtrl 中显示文本,但没有成功。
我正在使用std::ifstream 从使用utf-8 填充CListCtrl 的.txt 文件中读取。
“项目属性->字符”设置为“未设置”,我无法将其更改为使用Unicode,这是一个旧项目,最初不是我写的。
从 UTF-8 到 ANSI 的转换也不起作用,我不能使用 boost 库。
当我读到 CListCtrl 不支持 UTF-8 时。
我很高兴听到任何可能有效的解决方案,扩展 CListCtrl 以替换旧的等等。我正在使用 VS2010、.NET4。
【问题讨论】:
-
Windows 不支持 UTF-8。您需要使用外部库将 UTF-8 转换为 UTF-16。如果您有可用的 C++11,那么可以使用标准库来完成。
-
没试过(我没有windows box),但LVITEM实际上是你构建中的一个LVITEMA。您可以直接设置
LVITEMW,使用MultiByteToWideChar(CP_UTF8,...)并在宽版本LVITEMW 中设置宽字符文本。很久没有修改 ListView 控件了,但值得一试。 -
@МишаСухов:请注意,在任何与代码或首字母缩写词略有相似之处添加代码标记并不是一种改进。您之前的一些编辑已恢复。您还错过了许多其他改进的机会,例如语法问题。
标签: c++ unicode encoding utf-8 mfc