MFC 丢失 Unicode 文本
Posted
技术标签:
【中文标题】MFC 丢失 Unicode 文本【英文标题】:MFC losing Unicode text 【发布时间】:2020-07-09 18:36:47 【问题描述】:我有一个 MFC 对话框:
UNICODE 和 _UNICODE 已定义。
class VerifyComp : public CDialog
public:
CString m_VerifyText;
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
;
void VerifyComp::DoDataExchange(CDataExchange* pDX)
m_VerifyText = L"Ø2.0 X 4.1";
pDx->m_bSaveAndValidate = 0;
DDX_Text(pDX, IDC_VERIFY_TEXT, m_VerifyText);
pDx->m_bSaveAndValidate = 1;
DDX_Text(pDX, IDC_VERIFY_TEXT, m_VerifyText);
结果是 m_VerifyText == L"O2.0 X 4.1"; 我预计 m_VerifyText 没有改变。
我该如何解决这个问题?
【问题讨论】:
资源脚本是minimal reproducible example 的必需部分。请添加它的最小版本。 【参考方案1】:导致问题的对话框 .rc 文件中有一个属性。
OEM 转换设置为真。它必须是假的。
【讨论】:
【参考方案2】:您遇到的问题是,仅仅因为您有一个宽字符文字并不意味着文件本身可以处理 Unicode 字符。
要解决此问题,请使用 Unicode 字符集保存文件。转到文件->另存为,右键单击“保存”,选择“使用编码保存”,然后点击“是”。现在从编码列表中选择一个 Unicode 选项(我通常更喜欢带有签名的 utf-8)。
【讨论】:
以上是关于MFC 丢失 Unicode 文本的主要内容,如果未能解决你的问题,请参考以下文章
该文件含有unicode格式的字符,当文件保存为ANSI编码的文本文件时,该字符将丢失.