1.源文件的编码

Linux默认编码方式为UTF8,Windows默认编码方式GB2313/GBK。

首先确保源文件的编码方式与操作系统保持统一。可以通过文本编辑器——另存为方式修改源文件编码。这样就可以不需要QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));//或者UTF-8,因为Qt会默认使用系统的编码。

注意:在Windows中编辑的源代码拷贝到Linux时,首先手动改变源文件编码方式。

2.QString的编码

QString stores a string of 16-bit QChars, where each QChar corresponds to one UTF-16 code unit. (Unicode characters with code values above 65535 are stored using surrogate pairs, i.e., two consecutive QChars.)

QString是UTF-16编码方式存储的,所以确保所有QString中都构造为UTF-16编码方式。

  1. 代码中出现中文情况:通过QString::fromLocal8Bit("中文")或者QStringLiteral("中文")构造中文QString。
  2. 字节流(串口、网络、文本等):读入到QByteArray内,通过QTextCodec::codecForName("GBK")->toUnicode(buf)方式进行转换,将GBK/UTF-8等编码方式的字节流转化为UTF-16编码。

Qt 中文编码注意事项

相关文章: