首页| 论坛| 消息

标题:关于中文显示问题
作者:kangray
日期:2006-06-14 10:21
内容:

hi:
我编写了一些可以从网络数据库获取数据的程序
但是当数据是中文时,在板子上(我用ARM9)就只能显示方框
而且还有一件奇怪的事就是我在pc机的linux系统下把一些文件以中文来命名后,下载到板子
上,这时发现文件的名称也不能显示为中文,只是一些???符号
这两天看了一些qt程序的中文化、国际化之类的帖子,觉得好像不是我的问题所在
我这种问题与内核有关吗?
刚接触嵌入式不久,有哪位兄弟能指点一下方向吗
谢谢


#1 [shiroki 06-14 12:33]
文件名显示为问号是文件系统的编码问题, 需要在mount的时候加-charset选项
qte程序中的中文显示为方块可能有两个原因,一是中文的textcodec没有编译进qte库, 二是选择的字体不是中文字体。 qte里带的字体只有unifont是有中文的。
#2 [kangray 06-28 22:13]
引用第1楼shiroki于2006-06-14 12:33发表的“”:
文件名显示为问号是文件系统的编码问题, 需要在mount的时候加-charset选项
qte程序中的中文显示为方块可能有两个原因,一是中文的textcodec没有编译进qte库, 二是选择的字体不是中文字体。 qte里带的字体只有unifont是有中文的。
我选择的字体是unifont,至于中文的textcodec有没有编译进qte库就不知道了
怎么知道中文的textcodec有没有编译进qte库呢?
#3 [kangray 06-29 09:47]
原来我的程序运行时显示的是方块
但刚才我试着在运行应用程序时加入-font unifont参数,情况就变了
#./applicationname -font unifont
现在显示的是一些类似于中文的中文,反正是一些没见过的中文,我的程序大概是这样写的
QFont font1(“unifont”,16,50,FALSE,QFont::Unicode);
qApp->setFont(font1);

QString caption=“主窗口“;//使用台式机linux下的GBK输入法输入
QTextCodec *gk_codec=QTextCodec::codecForName(“GBK”);
setCaption(gk_codec->toUnicode(caption));
有谁知道为什么吗?
还有的继续是那个“中文的textcodec没有编译进qte库”的问题,请指教
#4 [shiroki 06-29 12:47]
你在程序里调用QTextcodec::codecFromName("GBK");
看看返回的指针是不是空,就知道GBK这种textcodec有没有编译进去了。 看你的代码应该已经编进codec了亚
其他的看FAQ
你说的类似中文的中文不知道是怎么回事。要不你把那段代码贴出来我们来试试
#5 [kangray 06-29 15:45]
我这有如下文件chi.h chi.cpp main.cpp
//********************chi.h*******************************
#ifndef FORM1_H
#define FORM1_H
#include
#include
#include
#include
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
class QMultiLineEdit;
class Form1 : public QWidget
{
Q_OBJECT
public:
Form1( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
~Form1();
QMultiLineEdit* MultiLineEdit1;

QTextCodec* gbk;
QString mytr(const char*);
};
#endif // FORM1_H
//********************chi.cpp**************************
#include "chi.h"
#include
#include
#include
#include
#include
#include
/*
*Constructs a Form1 which is a child of 'parent', with the
*name 'name' and widget flags set to 'f'
*/
Form1::Form1( QWidget* parent,const char* name, WFlags fl )
: QWidget( parent, name, fl )
{
if ( !name )
setName( "Form1" );
resize( 240, 320 );
setMaximumSize( QSize( 240, 320 ) );

gbk=QTextCodec::codecForName("GBK");
QString caption = "鐫€搴婂彛"; //这些中文是在x11的designer输入的,输入时已经是一些乱码
setCaption( mytr( caption ) );
MultiLineEdit1 = new QMultiLineEdit( this, "MultiLineEdit1" );
MultiLineEdit1->setGeometry( QRect( 32, 40, 181, 61 ) );
MultiLineEdit1->setText( mytr("脛茫潞脙!China n浣?) ); //这些中文是在生成chi.cpp后加入的,使用台式机linux下的GBK输入法输入,在台式机的linux下输入时可以显示为正确的中文

}
/*
*Destroys the object and frees any allocated resources
*/
Form1::~Form1()
{
// no need to delete child widgets, Qt does ..

<< 1 2 >> (1/2)

回复 发表
主题 版块