You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Unicode字符U+0103在ListBox中无法显示,MessageBox显示正常

解决方案

1. 确保项目与ListBox使用Unicode编码

  • 打开项目属性,将字符集设置为「使用 Unicode 字符集」(VS路径:配置属性 -> 常规 -> 字符集)
  • 创建ListBox时优先使用Unicode版本API(如CreateWindowW),避免ANSI与Unicode的编码转换丢失字符

2. 为ListBox替换支持扩展拉丁字符的字体

默认系统基础字体(如MS Sans Serif)不包含U+0103这类Latin Extended-A字符,需更换为支持该字符的字体,示例代码如下:

// 创建支持扩展拉丁字符的字体(以Segoe UI为例)
HFONT hUnicodeFont = CreateFontW(
    12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
    DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
    DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE,
    L"Segoe UI"
);
// 为ListBox设置新字体
SendMessage(hwndListBox, WM_SETFONT, (WPARAM)hUnicodeFont, TRUE);

可选字体还包括Arial Unicode MS、Times New Roman等,均支持U+0103字符。

3. 确认字符串传递的正确性

  • 直接使用宽字符字面量(如L"rom\u00e2n\u0103")传递给LB_ADDSTRING,避免TCHAR在非Unicode模式下的编码转换问题
  • 确保swprintf_s生成的是正确的宽字符字符串,可通过调试查看szBuffer的内存值验证

内容的提问来源于stack exchange,提问作者AutomaticInvest_4

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:38:31