- 主题:QT 6的QTextStream怎么设置使用GBK解码?
在QT5里,可以使用QTextStream的setCodec方法设置一个GBK的QTextCodec实例,从而使用GBK编码进行解码;但是在QT6里,这个方法被setEncoding代替了,而后者只能指定使用UTF8、UTF16或者SYSTEM编码。
为什么QT6要这么设计呢?怎么样才能指定QTextStream使用的编码呢?
--
FROM 114.253.38.*
QTextStream 内部是操作 QString 的,所以你大可以先写到一个 QString 里面,再用 QTextStream::string() 取出来,自行编码到 gtk 而不会损失效率。
弱问。为什么用这个 QTextStream 而不用 QDataStream ?
【 在 roy (天上掉大饼:学思行言) 的大作中提到: 】
: 在QT5里,可以使用QTextStream的setCodec方法设置一个GBK的QTextCodec实例,从而使用GBK编码进行解码;但是在QT6里,这个方法被setEncoding代替了,而后者只能指定使用UTF8、UTF16或者SYSTEM编码。
: 为什么QT6要这么设计呢?怎么样才能指定QTextStream使用的编码呢?
--
FROM 125.78.66.*
感谢,我之前用的是QTextStream,然后现在想转成qt 6
我研究了一下发现虽然QTextStream的setEncoding参数类型Encoding在文档里只有8个值,但实际不止这8个值。然后可以用QStringConverter::encodingForName函数获取GBK对象的Encoding值。
不过仔细看了文档之后发现qt6最低要求Win 10 2004,这要求太高了,所以还是用回qt 5.15了
【 在 hgoldfish (老鱼) 的大作中提到: 】
: QTextStream 内部是操作 QString 的,所以你大可以先写到一个 QString 里面,再用 QTextStream::string() 取出来,自行编码到 gtk 而不会损失效率。
: 弱问。为什么用这个 QTextStream 而不用 QDataStream ?
--
FROM 114.253.32.*
是啊。我还在坚持 5.12,因为我拿 Qt 做服务端 C++,发现这个版本已经够用了。日常自己的桌面小工具也是 Qt 5.15, Qt6 不支持 win7 太坑人了。在中国约等于无用。
【 在 roy (天上掉大饼:学思行言) 的大作中提到: 】
: 感谢,我之前用的是QTextStream,然后现在想转成qt 6
: 我研究了一下发现虽然QTextStream的setEncoding参数类型Encoding在文档里只有8个值,但实际不止这8个值。然后可以用QStringConverter::encodingForName函数获取GBK对象的Encoding值。
: 不过仔细看了文档之后发现qt6最低要求Win 10 2004,这要求太高了,所以还是用回qt 5.15了
: ...................
--
FROM 112.47.122.*