【问题标题】:Not able to load chinese characters using CString无法使用 CString 加载中文字符
【发布时间】:2016-10-01 17:55:52
【问题描述】:

我在MFC应用程序中使用CString从字符串表加载资源,但它没有加载任何中文或日文字符(它显示??而不是中文字符)。

代码片段

CString m_resoucestring(MAKEINTRESOURCE(ID));

【问题讨论】:

  • 请更具体。你的CStringCStringA 吗?还是CStringW?我的猜测是它是一个CStringA,它代表一个ANSI 字符串。根据您的代码页,这可能或不能表示中文和日文字符。请改用CStringW,它代表一个Unicode字符串。
  • 另外你怎么不使用LoadString方法?

标签: c++ mfc


【解决方案1】:
  • 如果您不能(或不想)依赖项目设置,请明确使用 CStringW
  • 您提到您无法显示 - 这是什么意思?你是如何展示它的? TextOut, SetWindowText ?
  • 如果字符串对象出现问题,请在调试器中检查,还是只是显示它的方式?
  • 确保以正确的编码保存资源文件。

【讨论】:

    【解决方案2】:

    项目设置中将您的项目切换为UNICODE字符集。之后您的CString 将自动变为CStringW,完全符合UNICODE。在 MBCS 模式下,CString 定义为 CStringA,它只支持 ANSI 编码。

    【讨论】:

    • CStringA 使用 ANSI 编码,而不是 ASCII。正如你所说,它是一个多字节字符串。 ASCII 中没有多字节序列。
    • 好收获。谢谢。
    猜你喜欢
    • 2018-10-18
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 2021-11-18
    • 2011-04-10
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    相关资源
    最近更新 更多