Qt 字符串(00):Unicode in Qt【官翻】

本文介绍了Qt中使用的Unicode标准及相关的字符串处理类,如QString等。同时,文中也提到了Qt提供的Unicode支持,包括文件I/O转换、地区特定输入方法的支持、符合Unicode的文本分割等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unicode in Qt

Unicode几乎是世界上所有语言的文本进行编码的标准。现在,在大多数现代操作系统上,它被用作文本的本机编码。主要的例外是Microsoft Windows,它仍然有用于应用程序的双系统支持的代码页和Unicode。

Qt使用字符串的类

这些类在处理字符串数据时是相关的。 有关渲染文本的信息,请参见“ Rich Text Processing”(RTF处理)概述,如果您的字符串数据为XML,请参见“ XML Processing”(XML处理)概述。

类名简介
QByteArray字节数组
QByteArrayList字节数组列表
QByteArrayMatcher包含可以在字节数组中快速匹配的字节序列
QChar16位Unicode字符
QCollator根据本地排序规则算法比较字符串
QCollatorSortKey可用于加速字符串整理
QLatin1Char8位ASCII /拉丁1字符
QLatin1String围绕US-ASCII / Latin-1编码的字符串文字的薄包装器
QLocale在数字及其各种语言的字符串表示形式之间转换
QStaticByteArrayMatcherQByteArrayMatcher的编译时版本
QStringUnicode字符串
QStringList字符串清单,继承QList
QStringMatcher包含可以在Unicode字符串中快速匹配的字符序列
QStringRefQString子字符串的薄包装
QStringViewUTF-16字符串的统一视图以及QString API的只读子集
QTextBoundaryFinder在字符串中查找Unicode文本边界的方法
QTextStream方便的阅读和书写文字界面

Web上有关Unicode的信息

Unicode协会有许多可用的文档,包括

Unicode in Qt

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

  • 文件I/O与旧地遗留编码之间的转换:见QTextCodec和QTextStream。

  • 支持地区特定的输入方法和键盘。

  • 一个字符串类QString,存储Unicode字符,支持从C字符串迁移,包括快速转换UTF-8、ISO8859-1和US-ASCII,以及所有常见的字符串操作。

  • 能够处理unicode的UI控件。

  • 符合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提供了许多内置的QTextCodec类,即知道如何在Unicode和传统编码之间进行转换以支持必须与其他程序对话或以传统文件格式读取/写入文件的程序的类。

const char * 的相互转换使用UTF-8。 但是,应用程序可以轻松找到其他语言环境的编解码器,并将任何打开的文件或网络连接设置为使用特殊的编解码器。

于US-ASCII和ISO-8859-1非常普遍,因此还存在特别快速的映射函数。 例如,要打开应用程序的图标,可以这样做:

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

或者

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

Qt支持呈现世界上大多数语言编写的文本。受支持的写入系统的详细列表在一定程度上取决于操作系统支持和目标系统上的字体可用性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值