Qt中的Unicode

Unicode 几乎是所有世界语言的文本编码标准。它目前已作为大多数现代操作系统的文本本地编码使用。唯一的主要例外是Microsoft Windows,它仍然支持代码页和Unicode的双系统来为应用程序服务。

Qt处理字符串的类

这些类在处理字符串数据时是相关的。有关文本渲染的信息,请参阅富文本处理概述,如果您的字符串数据在XML中,请参阅XML处理概述。

QAnyStringView

对Latin-1、UTF-8或UTF-16字符串进行统一查看,具有QString API的只读子集

QByteArray

字节数组

QByteArrayList

字节数组的列表

QByteArrayMatcher

存储一个可以在字节数组中快速匹配的字节序列

QByteArrayView

具有QByteArray API的只读子集的字节数组查看器

QChar

16位Unicode字符

QCollator

根据本地排序算法比较字符串

QCollatorSortKey

可用于加速字符串排序

QLatin1Char

8位ASCII/Latin-1字符

QLatin1StringMatcher

针对Latin-1文本中的子字符串进行优化的搜索

QLatin1StringView

围绕US-ASCII/Latin-1编码的字符串字面量的轻量级包装器

QLocale

在各种语言中转换数字及其字符串表示形式

QStaticByteArrayMatcher

QByteArrayMatcher的编译时版本

QStaticLatin1StringMatcher

QLatin1StringMatcher的编译时版本

QString

Unicode字符字符串

QStringList

字符串列表

QStringMatcher

在Unicode字符串中快速匹配字符序列

QStringRef

QString子字符串的轻量级包装器

QStringTokenizer

根据给定的分隔符沿字符串拆分标记

QStringView

具有QString API的只读子集的UTF-16字符串统一查看器

QTextBoundaryFinder

在字符串中查找Unicode文本边界的方法

QTextStream

方便的阅读和写入文本的界面

QUtf8StringView

具有QString API的只读子集的UTF-8字符串统一查看器

关于Web上Unicode的信息

Unicode联盟 有许多文件可供下载,包括

Qt中的Unicode

在Qt中,以及大多数使用Qt的应用程序中,大多数或所有用户可见的字符串都使用Unicode存储。Qt提供了

  • 文件I/O的保留编码转换:请参阅QTextCodecQTextStream
  • 支持特定于区域的输入方法和键盘。
  • 一个字符串类《QString》,存储Unicode字符,支持从C字符串迁移,包括快速转换为UTF-8、ISO8859-1和US-ASCII,以及常规的字符串操作。
  • 支持Unicode的用户界面控件。
  • 符合Unicode的文本分段(QTextBoundaryFinder
  • 符合Unicode的换行和文本渲染

为了充分利用Unicode,我们建议使用《QString》存储所有可见的字符串,并使用《QTextStream》进行所有文本文件I/O。

Qt中所有可能为用户可见字符串的功能参数,如《QLabel::setText()》和许多其他参数,都接受const QString &类型。<QString》提供了从<code translate="no">const char *到<code translate="no">const QString &的隐式转换,使得以下类似

label->setText("Password:");

会工作。还有一个QObject::tr()函数,提供翻译支持,如下所示

label->setText(tr("Password:"));

QObject::tr()将<code translate="no">const char *映射到Unicode字符串,并使用可安装的<a href="qtranslator.html" translate="no">QTranslator对象进行映射。

Qt提供了一些内置的<a href="qtextcodec.html" translate="no">QTextCodec类,即知道如何将Unicode和保留编码之间进行转换的类,以支持必须与其他程序或其他程序通信或读取/写入保留文件格式的程序。

从<code translate="no">const char *到<code translate="no">const char *的转换使用UTF-8。然而,应用程序可以轻松找到其他区域设置的编解码器,并将打开的任何文件或网络连接设置为一个特殊的编解码器。

因为US-ASCII和ISO-8859-1非常常见,也有特别快的函数将它们映射到它们的对应项。例如,要打开应用程序的图标,可以这样做

QFile file(QString::fromLatin1("appicon.png"));

QFile file(QLatin1String("appicon.png"));

Qt支持在世界上大多数用语言写的文本的渲染。支持的书写系统列表取决于操作系统对此的支持以及目标系统上可用的字体。

另请参阅使用Qt进行国际化

© 2024 Qt公司。本手册中的文档贡献均为其各自所有者的版权。本手册提供的文档在_free_软件基金会的条款下获得授权。Qt及其相关标志是芬兰Qt公司和/或全球其他国家的商标。所有其他商标均为各所有者所有。