Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

这个库的编码问题 #189

Open
caomengxuan666 opened this issue Oct 17, 2024 · 0 comments
Open

这个库的编码问题 #189

caomengxuan666 opened this issue Oct 17, 2024 · 0 comments

Comments

@caomengxuan666
Copy link

如果是win上msvc与qt的环境,msvc和qt会产生编码冲突,也就是msvc采用的编码不是utf8,如果在代码里面,检测到msvc与qt的时候可以加一个utf8的宏。

因为这种编码情况下会让很多字符无法以正常形式读取,比如注释会引发大量的报错。这种情况下,本机是gbk的情况下如果用utf8会无法加载出注释,也就是注释会乱码。如果用别的编码,那么vs工具链无法正常编译。
最关键的是,采用msvc的时候,我们的utf8不含Bom,他会以本地形式加载,会出现编译报错,解决之后呢,控制台调试输出的在某些情况仍有可能出现乱码问题。

这里给出大家一个解决方案,在qt代码里面使用宏来避免我们的编码被改成非utf8形式进行加载。

单文件形式,在每个文件头部添加
~~
#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif
~~

或者在可执行文件主函数文件定义
~~
#include

extern QTextCodec *codec;
#define TU codec->toUnicode

QTextCodec *codec = QTextCodec::codecForName("utf-8");

~~

这种情况下,我们可以实现三种情况同时满足

  • 在qt的控件里面能正常显示文字

  • 在你的代码编辑器里面能正常显示中文注释

  • 在你的控制台里面可以正确调试打印正确编码字符。

这样的话,大家在自己的qt应用程序里面的时候就能正常嵌入这个分析器了,不需要用宽字符串之类的东西了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant