Qt 中的 Unicode
Unicode是世界上几乎所有语言的文本编码标准。如今,在大多数现代操作系统中,它都被用作文本的本地编码。微软的 Windows 系统是一个主要的例外,它仍有一个支持代码页和 Unicode 应用程序的双系统。
用于处理字符串的 Qt 类
这些类与处理字符串数据相关。有关渲染文本的信息,请参阅富文本处理概述;如果字符串数据是 XML 格式,请参阅XML 处理概述。
使用 QString API 的只读子集统一查看 Latin-1、UTF-8 或 UTF-16 字符串 | |
字节数组 | |
字节数组列表 | |
保存可在字节数组中快速匹配的字节序列 | |
使用 QByteArray API 的只读子集查看字节数组 | |
16 位 Unicode 字符 | |
根据本地化整理算法比较字符串 | |
可用于加快字符串校对速度 | |
8 位 ASCII/Latin-1 字符 | |
优化搜索 Latin-1 文本中的子串 | |
对 US-ASCII/Latin-1 编码字符串字面进行精简封装 | |
在各种语言的数字及其字符串表示之间进行转换 | |
使用正则表达式进行模式匹配 | |
正则表达式与字符串的匹配结果 | |
QRegularExpression 对象与字符串全局匹配结果的迭代器 | |
QByteArrayMatcher 的编译时版本 | |
QLatin1StringMatcher 的编译时版本 | |
统一字符编码字符串 | |
编码和解码文本的基类 | |
基于状态的文本解码器 | |
基于状态的文本编码器 | |
字符串列表 | |
保存可在 Unicode 字符串中快速匹配的字符序列 | |
QString 子串的精简包装器 | |
根据给定的分隔符将字符串分割成标记 | |
通过 QString API 的只读子集统一查看 UTF-16 字符串 | |
在字符串中查找 Unicode 文本边界的方法 | |
读写文本的便捷接口 | |
使用 QString API 的只读子集统一查看 UTF-8 字符串 |
网上有关统一码的信息
统一码联盟提供了大量文件,包括
Qt 中的 Unicode
在 Qt 和大多数使用 Qt 的应用程序中,大部分或所有用户可见字符串都使用 Unicode 保存。Qt 提供
- 文件 I/O 的传统编码转换:请参阅QTextCodec 和QTextStream 。
- 支持本地特定输入法和键盘。
- 字符串类QString 可存储 Unicode 字符,支持从 C 字符串迁移,包括快速转换为 UTF-8、ISO8859-1 和 US-ASCII,以及所有常用的字符串操作。
- 支持 Unicode 的用户界面控件
- 符合统一字符编码标准的文本分割 (QTextBoundaryFinder)
- 兼容 Unicode 的换行和文本渲染
为充分受益于 Unicode,我们建议使用QString 来存储所有用户可见字符串,并使用QTextStream 执行所有文本文件 I/O。
在 Qt 中,所有可能是用户可见字符串的函数参数、QLabel::setText() 和许多其他函数参数都使用const QString &
s。QString 提供了来自const char *
的隐式转换,因此类似于
label->setText("Password:");
这样就可以使用了。还有一个函数QObject::tr() 提供翻译支持,就像这样:
label->setText(tr("Password:"));
QObject::tr() 将const char *
映射到 Unicode 字符串,并使用可安装的QTranslator 对象来完成映射。
Qt XML 提供了许多内置的QTextCodec 类,即知道如何在 Unicode 和传统编码之间进行转换的类,以支持必须与其他程序对话或以传统文件格式读/写文件的程序。
与const char *
之间的转换使用 UTF-8。不过,应用程序可以很容易地找到其他地方的编解码器,并将任何打开的文件或网络连接设置为使用特殊的编解码器。
由于 US-ASCII 和 ISO-8859-1 非常普遍,因此也有一些特别快速的功能用于与它们之间的映射。例如,要打开一个应用程序的图标,可以这样做
或
QFile file(QLatin1String("appicon.png"));
Qt 支持渲染世界上大多数语言的文本。支持的书写系统的详细列表在一定程度上取决于操作系统的支持和目标系统上字体的可用性。
另请参阅 Qt 的国际化。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.