- class QStringConverter#
《
QStringConverter
》类为文本编码和解码提供了一个基类。更多…继承自:
QStringEncoder
,QStringDecoder
摘要#
方法#
def
__init__()
def
hasError()
def
isValid()
def
name()
def
resetState()
静态函数#
注意
本文档可能包含自动从C++翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译中存在问题,您也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建工单来告知我们。
详细描述#
警告
本节包含自动从C++翻译到Python的代码片段,可能包含错误。
Qt使用UTF-16来存储、绘制和操作字符串。在许多情况下,您可能需要处理不同的编码的数据。大多数通过文件和网络连接传输的文本数据都是UTF-8编码。
QStringConverter
类是QStringEncoder
和QStringDecoder
类的基类,后者有助于在不同的文本编码之间转换。QStringDecoder
能够将从编码表示转换为UTF-16格式的字符串,这是Qt内部使用的一种格式。QStringEncoder
执行相反的操作,将UTF-16编码的数据(通常以QString
形式)编码成请求的编码。支持的编码有
UTF-8
UTF-16
UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE
ISO-8859-1 (拉丁-1)
系统编码
QStringConverter
可以如下使用,将编码的字符串转换为UTF-16或从UTF-16转换回来。假设您有一些UTF-8编码的字符串,并想将其转换为
QString
。最简单的方法是使用一个QStringDecoder
类,如下所示:encodedString = "..." toUtf16 = QStringDecoder(QStringDecoder.Utf8) string = toUtf16(encodedString)
之后,
string
包含解码后的文本。使用QStringEncoder
类将字符串从Unicode转换为本地编码同样简单。string = "..." fromUtf16 = QStringEncoder(QStringEncoder.Utf8) encodedString = fromUtf16(string)
要读取或写入各种编码的文本文件,请使用
QTextStream
及其setEncoding()
函数。在尝试分块转换数据时,例如在通过网络接收时,必须格外小心。在这种情况下,可能有多字节字符被拆分到两个块中。最好的情况是丢失一个字符,最坏的情况是整个转换失败。
无论是
QStringEncoder
还是QStringDecoder
,都可以通过跟踪内部状态来简化这个问题。所以,只需要使用下一块数据再次调用编码器或解码器,就可以自动正确地继续编码或解码数据。toUtf16 = QStringDecoder(QStringDecoder.Utf8) string = QString() while new_data_available(): chunk = get_new_data() string += toUtf16(chunk)
QStringDecoder
对象在块之间保持状态,因此即使在多字节字符被分割在块之间时也能正常工作。由于内部状态,
QStringConverter
对象不能被复制,但可以移动。另请参阅
QTextStream
QStringDecoder
QStringEncoder
- class Encoding#
常量
描述
QStringConverter.Utf8
创建一个UTF-8的转换器
QStringConverter.Utf16
创建一个从或到UTF-16的转换器。在解码时,字节顺序将自动由前面的字节顺序标记检测。如果没有或是在编码时,将假定系统字节顺序。
QStringConverter.Utf16BE
创建一个从或到大端UTF-16的转换器。
QStringConverter.Utf16LE
创建一个从或到小端UTF-16的转换器。
QStringConverter.Utf32
创建一个从或到UTF-32的转换器。在解码时,字节顺序将自动由前面的字节顺序标记检测。如果没有或是在编码时,将假定系统字节顺序。
QStringConverter.Utf32BE
创建一个从或到大端UTF-32的转换器。
QStringConverter.Utf32LE
创建一个从或到小端UTF-32的转换器。
QStringConverter.Latin1
创建一个从或到ISO-8859-1 (Latin1)的转换器。
QStringConverter.System
创建一个从操作系统环境编码到或从其转换的转换器。对于基于Unix的系统,这始终被假定为UTF-8。在Windows上,这转换到和从区域代码页。
- PySide6.QtCore.QStringConverter.state#
- __init__()#
- __init__(name, f)
- 参数:
name – 字符串
f – 结合
Flag
- 静态 availableCodecs()#
- 返回类型:
字符串列表
返回支持编解码器的名称列表。此函数返回的名称可以传递给
QStringEncoder
或QStringDecoder
的构造函数以创建给定编解码器的编解码器。注意
编解码器的顺序是内部实现细节,不一定稳定。
- hasError()#
- 返回类型:
布尔值
如果转换无法正确转换字符,则返回 true。这可能由无效的 UTF-8 序列或由于目标编码的限制而无法转换的字符触发。
- isValid()#
- 返回类型:
布尔值
如果是有效的字符串编解码器,可以用于编码或解码文本,则返回 true。
默认构造的字符串编解码器或使用不受支持的名称构造的编解码器不是有效的。
- name()#
- 返回类型:
字符串
返回此
QStringConverter
可以编码或解码的编码的标准名称。如果转换器无效,则返回 nullptr。返回的名称是 UTF-8 编码的。另请参阅
返回编码
e
的标准名称。- resetState()#
重置转换器的内部状态,清除潜在的错误或不完整的转换。