Qt中的Unicode
Unicode 几乎是所有世界语言的文本编码标准。它目前已作为大多数现代操作系统的文本本地编码使用。唯一的主要例外是Microsoft Windows,它仍然支持代码页和Unicode的双系统来为应用程序服务。
Qt处理字符串的类
这些类在处理字符串数据时是相关的。有关文本渲染的信息,请参阅富文本处理概述,如果您的字符串数据在XML中,请参阅XML处理概述。
对Latin-1、UTF-8或UTF-16字符串进行统一查看,具有QString API的只读子集 | |
字节数组 | |
字节数组的列表 | |
存储一个可以在字节数组中快速匹配的字节序列 | |
具有QByteArray API的只读子集的字节数组查看器 | |
16位Unicode字符 | |
根据本地排序算法比较字符串 | |
可用于加速字符串排序 | |
8位ASCII/Latin-1字符 | |
针对Latin-1文本中的子字符串进行优化的搜索 | |
围绕US-ASCII/Latin-1编码的字符串字面量的轻量级包装器 | |
在各种语言中转换数字及其字符串表示形式 | |
QByteArrayMatcher的编译时版本 | |
QLatin1StringMatcher的编译时版本 | |
Unicode字符字符串 | |
字符串列表 | |
在Unicode字符串中快速匹配字符序列 | |
QString子字符串的轻量级包装器 | |
根据给定的分隔符沿字符串拆分标记 | |
具有QString API的只读子集的UTF-16字符串统一查看器 | |
在字符串中查找Unicode文本边界的方法 | |
方便的阅读和写入文本的界面 | |
具有QString API的只读子集的UTF-8字符串统一查看器 |
关于Web上Unicode的信息
Unicode联盟 有许多文件可供下载,包括
Qt中的Unicode
在Qt中,以及大多数使用Qt的应用程序中,大多数或所有用户可见的字符串都使用Unicode存储。Qt提供了
- 文件I/O的保留编码转换:请参阅QTextCodec和QTextStream。
- 支持特定于区域的输入方法和键盘。
- 一个字符串类《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(QLatin1String("appicon.png"));
Qt支持在世界上大多数用语言写的文本的渲染。支持的书写系统列表取决于操作系统对此的支持以及目标系统上可用的字体。
另请参阅使用Qt进行国际化。
© 2024 Qt公司。本手册中的文档贡献均为其各自所有者的版权。本手册提供的文档在_free_软件基金会的条款下获得授权。Qt及其相关标志是芬兰Qt公司和/或全球其他国家的商标。所有其他商标均为各所有者所有。