如题.
在使用CodeBlock+wxsmith时,如果输入中文, 保存时,会自动保存为UTF8格式, 编译运行后, 中文就乱码了.
如果手动改文件编码,gcc编译时又会报错...
使用CodeBlocks,有中文时,文件自动保存为UTF8格式,致使中文乱码,怎么解决啊??
Re: 使用CodeBlocks,有中文时,文件自动保存为UTF8格式,致使中文乱码,怎么解决啊??
什么版本的wx?首先源代码编辑器的编码设为UTF8; 乱码部分是在wxSmith创建的窗体的话,在源代码编辑器里把包含中文的字符串由_()改为wxT().下次修改了窗体后,C::B又会把wxT()改回_(),这是wxSmith的一个已知问题,目前无法解决。所以创建窗体时尽量一次规划好;或者先用英文制作,等项目完成阶段再改为中文窗体;最后一个方案是用wxFormBuilder,它不存在这个问题。
Regards,
Sam
-------------------------------------------------------------------
Windows 10 64bit
VS Community 2019
msys2-mingw13.2.0 C::B character set: UTF-8/GBK(Chinese)
wxWidgets 3.3/3.2.4 Unicode Mono Static gcc static build
Sam
-------------------------------------------------------------------
Windows 10 64bit
VS Community 2019
msys2-mingw13.2.0 C::B character set: UTF-8/GBK(Chinese)
wxWidgets 3.3/3.2.4 Unicode Mono Static gcc static build
Re: 使用CodeBlocks,有中文时,文件自动保存为UTF8格式,致使中文乱码,怎么解决啊??
wxSmith设计的界面元素中的汉字大部分默认生成的代码形如 _("汉字") 这样。如果编码默认设置为utf-8,那么可以正常编译,但是显示是乱码。自己写的代码如果使用形如 _T("汉字") 来处理汉字,在utf8编码下可以正常显示。可以修改codeblocks项目文件(*.cbp文件)来让它默认生成_T的字符串,参见:
<Extensions>
<code_completion />
<debugger />
<wxsmith version="1">
<gui name="wxWidgets" src="sssApp.cpp" main="sssFrame" init_handlers="necessary" language="CPP" />
<resources>
<wxFrame wxs="wxsmith/sssframe.wxs" src="sssMain.cpp" hdr="sssMain.h"fwddecl="1" i18n="0" name="sssFrame" language="CPP" />
<wxDialog wxs="wxsmith/NewDialog.wxs" src="NewDialog.cpp" hdr="NewDialog.h"fwddecl="1" i18n="0" name="NewDialog" language="CPP" />
<wxPanel wxs="wxsmith/NewPanel.wxs" src="NewPanel.cpp" hdr="NewPanel.h"fwddecl="1" i18n="0" name="NewPanel" language="CPP" />
</resources>
</wxsmith>
</Extensions>
<Extensions>
<code_completion />
<debugger />
<wxsmith version="1">
<gui name="wxWidgets" src="sssApp.cpp" main="sssFrame" init_handlers="necessary" language="CPP" />
<resources>
<wxFrame wxs="wxsmith/sssframe.wxs" src="sssMain.cpp" hdr="sssMain.h"fwddecl="1" i18n="0" name="sssFrame" language="CPP" />
<wxDialog wxs="wxsmith/NewDialog.wxs" src="NewDialog.cpp" hdr="NewDialog.h"fwddecl="1" i18n="0" name="NewDialog" language="CPP" />
<wxPanel wxs="wxsmith/NewPanel.wxs" src="NewPanel.cpp" hdr="NewPanel.h"fwddecl="1" i18n="0" name="NewPanel" language="CPP" />
</resources>
</wxsmith>
</Extensions>
Re: 使用CodeBlocks,有中文时,文件自动保存为UTF8格式,致使中文乱码,怎么解决啊??
管用,马克chshj2000 wrote:wxSmith设计的界面元素中的汉字大部分默认生成的代码形如 _("汉字") 这样。如果编码默认设置为utf-8,那么可以正常编译,但是显示是乱码。自己写的代码如果使用形如 _T("汉字") 来处理汉字,在utf8编码下可以正常显示。可以修改codeblocks项目文件(*.cbp文件)来让它默认生成_T的字符串,参见:
<Extensions>
<code_completion />
<debugger />
<wxsmith version="1">
<gui name="wxWidgets" src="sssApp.cpp" main="sssFrame" init_handlers="necessary" language="CPP" />
<resources>
<wxFrame wxs="wxsmith/sssframe.wxs" src="sssMain.cpp" hdr="sssMain.h"fwddecl="1" i18n="0" name="sssFrame" language="CPP" />
<wxDialog wxs="wxsmith/NewDialog.wxs" src="NewDialog.cpp" hdr="NewDialog.h"fwddecl="1" i18n="0" name="NewDialog" language="CPP" />
<wxPanel wxs="wxsmith/NewPanel.wxs" src="NewPanel.cpp" hdr="NewPanel.h"fwddecl="1" i18n="0" name="NewPanel" language="CPP" />
</resources>
</wxsmith>
</Extensions>
Regards,
Sam
-------------------------------------------------------------------
Windows 10 64bit
VS Community 2019
msys2-mingw13.2.0 C::B character set: UTF-8/GBK(Chinese)
wxWidgets 3.3/3.2.4 Unicode Mono Static gcc static build
Sam
-------------------------------------------------------------------
Windows 10 64bit
VS Community 2019
msys2-mingw13.2.0 C::B character set: UTF-8/GBK(Chinese)
wxWidgets 3.3/3.2.4 Unicode Mono Static gcc static build
Re: 使用CodeBlocks,有中文时,文件自动保存为UTF8格式,致使中文乱码,怎么解决啊??
你这种情况,我这里编译可以,显示也正常。chshj2000 wrote:wxSmith设计的界面元素中的汉字大部分默认生成的代码形如 _("汉字") 这样。如果编码默认设置为utf-8,那么可以正常编译,但是显示是乱码。
我电脑上,如果用wxsmith创建一个新的对话框的话,它产生的cpp和h文件默认编码不是utf8,我一般用notepad++人工转换一下编码格式为utf8(without bom)。之后再添加任何控件(包括有正文的label的控件),也都编译正常,显示正常。
Re: 使用CodeBlocks,有中文时,文件自动保存为UTF8格式,致使中文乱码,怎么解决啊??
-finput-charset=UTF-8