• QT学习:07 字符编码的问题


    --- title: framework-cpp-qt-07-字符编码的问题 EntryName: framework-cpp-qt-07-char-coding date: 2020-04-13 17:47:21 categories: tags: - encode - qt - config ---

    章节描述:
    实际的国际化项目开发中应该按照全英文的来写代码,然后将英文界面翻译成多种语言文字。

    编码问题 的 回顾 与 总结:

    • GB2312 :是对 ASCII 的中文扩展。兼容ASCII;
    • GBK: 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号;
    • GB18030:在GBK基础上加入少数民族的几千个新字,扩展成GB18030;
    • Unicode:所有的字符被一视同仁,汉字不再使用“两个扩展ASCII”,而是使用“1个
    • Unicode”,注意,现在的汉字是“一个字符”了,于是,拆字、统计字数这些问题也就自然而然的解决了。但是,这个世界不是理想的,不可能在一夜之间所有的系统都使用Unicode来处理字符,所以Unicode在诞生之日,就必须考虑一个严峻的问题:和ASCII字符集之间的不兼容问题。我们知道,ASCII字符是单个字节的,比如“A”的ASCII是65。而Unicode是双字节的,比如“A”的Unicode是0065,这就造成了一个非常大的问题:以前处理ASCII的那套机制不能被用来处理Unicode了。
      另一个更加严重的问题是,C语言使用''作为字符串结尾,而Unicode里恰恰有很多字符都有一个字节为0,这样一来,C语言的字符串函数将无法正常处理Unicode,除非把世界上所有用C写的程序以及他们所用的函数库全部换掉。
      于是,比Unicode更伟大的东东诞生了,之所以说它更伟大是因为它让Unicode不再存在于纸上,而是真实的存在于我们大家的电脑中。那就是:UTF。
    • UTF= UCS Transformation Format,即UCS转换(传输)格式。
      它是将Unicode编码规则和计算机的实际编码对应起来的一个规则。现在流行的UTF有2种:UTF-8和UTF-16。这两种都是Unicode的编码实现。

    在QT中设置编码

    为了兼容需要,点击"工具"-->"选项",找到"文本编辑器" - "显示";勾选 Display file encoding

    这样,我们可以在编辑器右上角看到当前文件的编码格式。

    点击可以进行切换,建议使用UTF-8进行编码。

    习惯上,字符串也应该用 tr 函数封装,方便做国际化翻译。如果项目有面向国际化的要求,程序源代码里应该全部用英文和数字等 ASCII 码字符,尽量少用汉字,应当将汉字作为一个语言的翻译文件程序。本教程大多数例子都是不符合国际化标准的,因为方便大家看,作者自己也省事。读者实际的国际化项目开发中应该按照全英文的来写代码,然后将英文界面翻译成多种语言文字的。

    //qtmess.cpp
    #include <QApplication>
    #include <QTextBrowser>
    #include <QDebug>
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QString strText = QObject::tr("1234打印汉字");
        QTextBrowser tb;
        tb.setText(strText);
        tb.setGeometry(40, 40, 400, 300);
        tb.show();
    
        return a.exec();
    }
    
  • 相关阅读:
    Qt4.7.4下单独编译QtWebkit
    CronHowto Community Ubuntu Documentation
    菜鸟学Python(9):给文件添加内容,得到文件信息
    yet another software souring company based on san franciso
    Get Started With Chickenfoot
    Berkeley DB(四) DB Environment
    搭建SSH框架链接Oracle数据库
    Linux下手动编译安装Apache2.x
    Errore HTTP 404.2 Not Found" IIS 7.5 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理
    关于二分法中取中间值时向下和向上取整的问题(由大白LA3971想到的)
  • 原文地址:https://www.cnblogs.com/schips/p/framework-cpp-qt-07-char-coding.html
Copyright © 2020-2023  润新知