现在的位置: 首页 > 综合 > 正文

QTOpia中文化

2013年08月26日 ⁄ 综合 ⁄ 共 1861字 ⁄ 字号 评论关闭

QTOpia中文化

一:字符集介

   经颁布了多中文信息编码标准,常用的有:GB2312-1980GB12345GB13000GBK)以及最新GB18030,其中GB13000GB2312展,又常被成GBKGB18030向下兼容GB2312GBK,中文WINDOW98、中文WIN2000操作系采用的中文字符集是GB2312

   GB2312库仅覆盖部分,存位置索引是编码中每字的第8bit0的,如A1A1编码汉字在字中的索引是2121,而非A1A1。以下是编码规则

00~7F

A1~F7 A1~FE

GBK编码规则是:

00~7F

81~FE 40~7E

               80~FE

GB18030是最新的编码标准,其编码为一、二、四变长编码

00~7F

81~FE 40~7E

               80~FE

四字81~FE 30~39 81~FE 30~39

Unicode编码采用等长编码,二表示一字符编码ASCII也采用节来表示,unicode使用二间来描述编码,平面分256行、256列,对应编码的高低字

 

二:Qt 国际

在文本示上,Qt 使用了Unicode 为内编码了程序的国际化,通常我在文本示的地方不直接入本地字符,用英文代替,比如要编写一中文界面的 Qt 程序,应该在程序中使用英文,程序编写完成后,把文本提取出于需要翻的地方,首先是在文本tr()函数标识,同制作出.qm信息文件,在程序中加入QTranslator即可。比如我在某一程序中有如下句:

setCaption(tr(“main window”));

了能示中文,有两种方法:

方法一:

l         修改工程文件,加上TRANSLATIONS = xxx.ts

l         lupdate 工程文件名

l         linguist编辑刚生成的xxx.ts文件保存

l         lrelease 工程文件名 xxx.qm

l         main.cpp中加入QFont font1(“unifont”,16,50,FALSE,QFont::Unicode);

qApp->setFont(font1);

QTranslator *translator = new QTranslator(0);

                     translator->load("xxx.qm"".");

                     qApp->installTranslator(translator);

方法二:

l         findtr 文件名(通常CPP文件) > xxx.po

l         编辑po文件,其中charset需由iso-8859-1GB2312,然后main window”翻成“主窗口”

l         msg2qm –scope zh_CN.GB2312 xxx.po xxx.qm

l         main.cpp中加入QFont font1(“unifont”,16,50,FALSE,QFont::Unicode);

qApp->setFont(font1);

QTranslator *translator = new QTranslator(0);

                     translator->load("xxx.qm"".");

qApp->installTranslator(translator);

方法三:

只是提供本地用使用,无需国际化,QT提供一支持,在QT中有多本地字符集同unicode转换引擎,他QTextCodec的派生,QGbkCodecQJisCodec, QHebrewCodec等。如:

QFont font1(“unifont”,16,50,FALSE,QFont::Unicode);

qApp->setFont(font1);

QString caption=“主窗口“;

QTextCodec *gk_codec=QTextCodec::codecForName(“GBK”);

setCaption(gk_codec->toUnicode(caption));

       上面可以看出,使用转换引擎可以实现中文示,要步如下:

1:修改main.cpp文件,字体改

抱歉!评论已关闭.