前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ImGui中文乱码问题的简单解决方法

ImGui中文乱码问题的简单解决方法

原创
作者头像
晨星成焰
发布2024-06-19 14:44:52
3640
发布2024-06-19 14:44:52
举报
文章被收录于专栏:C++入门基础知识

我在用ImGui写简单的页面时碰到了中文乱码的问题,为了解决问题,尝试了各种方法,如下是我的解决方法

中文乱码示例
中文乱码示例

解决方法

事先声明

本文提供的解决中文乱码问题的方法

是基于DX11环境下的ImGui

使用的是微软雅黑字体

文件编码是UTF-8

1.在输出时给于额外的前缀

u8前缀表示一个字符串字面量是以UTF-8编码的。当源代码中编写包含非ASCII字符(如中文、日文、韩文等多字节字符)的字符串时,或者即使字符串中不包含非ASCII字符但你希望明确指定其编码为UTF-8时,记得使用u8前缀。

解决方法
解决方法

一般加了u8前缀后,问题就解决了,如果还有问题可能是使用了不支持中文字体

2.加载支持中文的字体

ImGui的提供的默认字体可能不支持中文

要如何更改ImGui的字体呢

一般我们可以在Imgui项目 例如DX11项目

提供的main.cpp示例里的//Load Fonts下面

找到这两行

将其注释取消或者在自己引入Imgui的main文件里加入这两行

AddFontFromFileTTF的第一个参数,一般为对应字体所在位置

大多字体库位于C:\Windows\Fonts

文件路径
文件路径

右键属性打开某个字体的属性面板,这里以微软雅黑为例

字体名
字体名

可以看到msyh.ttc就是该字体的名字

3.确保文件编码

确保你的源代码文件(如.cpp.h等)保存为支持中文的编码格式,我提供的解决方法是面向UTF-8文件编码的。在大多数代码编辑器中,你可以设置或转换文件的编码格式。

以下提供一种VS编译器中编码的快捷切换方式

在VS中的扩展->管理扩展中搜索插件FileEncoding下载安装便可以轻快的切换文件编码

FileEncoding
FileEncoding

综上就是我的解决办法了😋

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解决方法
    • 1.在输出时给于额外的前缀
      • 2.加载支持中文的字体
        • 3.确保文件编码
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档