Qt编码相关 QTextCodec

  QTextCodec类以及QTextStream使得Qt可以很容易地支持大量用户数据地输入和输出编码。当一个应用程序启动时,机器地语言环境便会决定处理8位数据(例如,字体选择 文本显示 8位文本I/O 字符输入等)时使用地8位编码。

  应用程序有时也需要使用默认地本地8位编码以外的编码,利用,使用ISO 8859-5编码,代码如下:

QString string = ......; //一些Unicode文本

QTextCodec *codec = QTextCodec::codecForname("ISO 8859-5");

QByteArray encodedString = codec->fromUnicode(string);

QString是Unicode编码的

QByteArray QString::toLocal8Bit() const

Returns the local 8-bit representation of the string as a QByteArray. The returned byte array is undefined if the string contains characters not supported by the local 8-bit encoding.

QString::toLocal8Bit()函数:将Unicode转换为本地8位编码

QByteArray QString::toUtf8() const

Returns a UTF-8 representation of the string as a QByteArray.

UTF-8 is a Unicode codec and can represent all characters in a Unicode string like QString.

QString::toUtf8()函数:返回使用8位UTF-8编码的文本

QString QTextCodec::toUnicode(const QByteArray &a) const

Converts a from the encoding of this codec to Unicode, and returns the result in a QString.

QTextCodec::toUnicode()函数:将其他编码转换为Unicode编码

QString QString::fromUtf8(const char *str, int size = -1)

返回使用UTF-8字符串str的前size字节初始化的QString。

如果size为-1(默认值),则将其视为strlen(str)。

QString QString::fromLocal8Bit(const char *str, int size = -1)

返回使用8位字符串str的前size个字符初始化的QString。

如果size为-1(默认值),则将其视为strlen(str)。

QTextCodec *QTextCodec::codecForLocale()

返回指向最适合此语言环境的编解码器的指针。

在Windows上,编解码器将基于系统区域设置。 在Unix系统上,如果找不到该语言环境的内置编解码器,编解码器可能会回退到使用iconv库。

请注意,在这些情况下,编解码器的名称将为“System”。

注意:此功能是线程安全的

使用该函数返回的编码是最重要的一个编码,因为这个是用户与他人或者其他应用程序进行通信最有可能使用的编码。

猜你喜欢

转载自blog.csdn.net/qq_25800311/article/details/84885982