CodeBlock下开发窗口出现乱码
来源:互联网 发布:最全淘宝假货店铺名单 编辑:程序博客网 时间:2024/06/07 03:39
.Code::Blocks 编辑器保存源文件用的编码。
默认情况下,是保存为windows本地编码的,也就是WINDOWS-936字符集,也就是GBK编码。
但是很神奇的是,GCC编译器默认编译的时候是按照UTF-8解析的。你存成GBK,但是当成UTF-8解析,这还能编译通过,这才有鬼了,所以这两个地方编码不统一好,编译的时候报错:error: converting to execution character set: Illegal byte sequence,你根本连通过编译的可能性都没有!
其实要解决这个问题很简单,编写Code::Blocks的人只需要在调用编译器之前检测一下源文件是什么编码,然后就自动让编译器用什么编码进行解释,问题就解决了。只是很可惜,Code::Blocks编写的人可能还没有这么做。所以
QT的代码中需要加入, QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));来改变默认字符集。
#include <QtGui>
#include<QPaintEvent>
#include <QWidget>
#include <QRadioButton>
#include <QTextEdit>
#include <QPushButton>
#include <QGridLayout>
class Widget : public QWidget
{
public:
Widget(QWidget *parent = 0)
: QWidget(parent)
{}
private:
QRadioButton* radioBtnMengToHan;
QRadioButton* radioBtnHanToMeng;
QTextEdit* leftEdit;
QTextEdit* rightEdit;
QPushButton* translateBtn;
QGridLayout* mainLayout;
void paintEvent(QPaintEvent *)
{
//QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
// QTextCodec::setCodecForCStrings("GB2312");//::codecForName("GB2312");
// QPainter p(this);
#if 1
// QTextDocument document;
// document.setHtml("<br>Tssss<br>e<br>s<br>t<br>");
// document.drawContents(&p);
// QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
//QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
radioBtnHanToMeng = new QRadioButton(QObject::tr("汉译蒙"));
radioBtnMengToHan = new QRadioButton(tr("蒙译汉"));
leftEdit = new QTextEdit;rightEdit = new QTextEdit;
translateBtn = new QPushButton(tr("翻译"));
mainLayout = new QGridLayout(this);
mainLayout->addWidget(radioBtnHanToMeng, 0, 0);
mainLayout->addWidget(radioBtnMengToHan, 0, 1);
mainLayout->addWidget(leftEdit, 1, 0);
mainLayout->addWidget(rightEdit, 1, 1);
mainLayout->addWidget(translateBtn, 2, 1, 1, 1);
#else
drawRotatedText(&p, 90, width() / 2, height() / 2, "The vertical text");
#endif
}
/*
void drawRotatedText(QPainter *painter, float degrees, int x, int y, const QString &text)
{
painter->save();
painter->translate(x, y);
painter->rotate(degrees);
painter->drawText(0, 0, text);
painter->restore();
}
*/
};
int main(int argc, char **argv)
{
QApplication a(argc, argv);
Widget w;
w.resize(800,460);
//QString string = "t\ne\ns\nt";
// QString string = "test";
// QString string="§ß§ç§Ò§à§Ý§Õ";
// QLabel label;
// label.setText(string);
// label.show();
// QPainter p;
// w.drawRotatedText(&p,90,10,10,string);
w.show();
return a.exec();
}
- CodeBlock下开发窗口出现乱码
- [Linux] Ubuntu下CodeBlock开发环境配置
- Ubuntu下CodeBlock开发环境配置
- Ubuntu下CodeBlock开发环境配置
- Ubuntu下CodeBlock开发环境配置
- Ubuntu下CodeBlock开发环境配置
- windows下mingw与codeblock环境下开发mysql
- CodeBlock 下 配置 多线程!
- ubuntu下安装codeblock
- codeblock c++开发利器
- Codeblock输入中文乱码解决方法
- idea开发环境下安装阿里规约出现中文乱码
- 解决在ubuntu下运行codeblock程序出现 permision denied的问题
- 解决在ubuntu下运行codeblock程序出现 permision denied的问题
- mysql 编辑窗口出现乱码问题
- MFC窗口中汉字出现乱码 解决方法
- CodeBlock环境下配置wxwidgets
- Ubuntu 10.04 下安装codeblock
- Cocos2D权威指南 试读章节略读笔记
- 堆和栈的区别
- 做完心脏支架手术后依然心绞痛 、胸闷气短的解决方法
- ubuntu的root 如何开启
- 深入浅出JSONP--解决ajax跨域问题
- CodeBlock下开发窗口出现乱码
- c++ 父类指针转换为子类指针后调用子类的成员函数问题
- Menu整理
- Xcode快捷键搜集 陆续整理中
- 【P000-005】交易费计算系统,1.0正式版
- js 笔记 定时器
- 图论算法进阶习题集-500题
- 从二叉查找树到平衡二叉树再到红黑树
- U盘数据丢失恢复教程