使用CodeBlocks,有中文时,文件自动保存为UTF8格式,致使中文乱码,怎么解决啊??

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
zaazbb
Knows some wx things
Knows some wx things
Posts: 36
Joined: Fri Nov 12, 2010 6:48 am

使用CodeBlocks,有中文时,文件自动保存为UTF8格式,致使中文乱码,怎么解决啊??

Post by zaazbb »

如题.
在使用CodeBlock+wxsmith时,如果输入中文, 保存时,会自动保存为UTF8格式, 编译运行后, 中文就乱码了.
如果手动改文件编码,gcc编译时又会报错...
samsam598
Super wx Problem Solver
Super wx Problem Solver
Posts: 340
Joined: Mon Oct 06, 2008 12:55 pm

Re: 使用CodeBlocks,有中文时,文件自动保存为UTF8格式,致使中文乱码,怎么解决啊??

Post by samsam598 »

什么版本的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
chshj2000
In need of some credit
In need of some credit
Posts: 4
Joined: Tue Dec 20, 2011 3:22 am

Re: 使用CodeBlocks,有中文时,文件自动保存为UTF8格式,致使中文乱码,怎么解决啊??

Post by chshj2000 »

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>
samsam598
Super wx Problem Solver
Super wx Problem Solver
Posts: 340
Joined: Mon Oct 06, 2008 12:55 pm

Re: 使用CodeBlocks,有中文时,文件自动保存为UTF8格式,致使中文乱码,怎么解决啊??

Post by samsam598 »

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
ollydbg23
Super wx Problem Solver
Super wx Problem Solver
Posts: 438
Joined: Fri Dec 12, 2008 10:31 am

Re: 使用CodeBlocks,有中文时,文件自动保存为UTF8格式,致使中文乱码,怎么解决啊??

Post by ollydbg23 »

chshj2000 wrote:wxSmith设计的界面元素中的汉字大部分默认生成的代码形如 _("汉字") 这样。如果编码默认设置为utf-8,那么可以正常编译,但是显示是乱码。
你这种情况,我这里编译可以,显示也正常。
我电脑上,如果用wxsmith创建一个新的对话框的话,它产生的cpp和h文件默认编码不是utf8,我一般用notepad++人工转换一下编码格式为utf8(without bom)。之后再添加任何控件(包括有正文的label的控件),也都编译正常,显示正常。
cenxcen
In need of some credit
In need of some credit
Posts: 4
Joined: Sat Apr 14, 2012 11:11 am

Re: 使用CodeBlocks,有中文时,文件自动保存为UTF8格式,致使中文乱码,怎么解决啊??

Post by cenxcen »

-finput-charset=UTF-8
Post Reply