Qt读取TXT文件时,GBK与UTF-8编码判断

摘要:
使用前需要将其转换为Unicode(Qt的默认编码格式)。如果转换中出现无效字符,则不将其视为此类编码格式。ConverterStatestate:QTextCodec*codec=QTextCodec;QStringtext=编解码器->ba。size();&amp,0){text=QTextCodec;codecForName(“GBK”)->toUnicode(ba):

读取txt文件时,很多时候无法获取文件的编码格式。如果直接进行使用,则有可能出现乱码。需要在使用前将其转为Unicode(Qt的默认编码格式)。

虽然实际的编码格式种类非常多,但平常主要使用的有GBK与UTF-8两种。可以依次尝试转换,如果转换出现无效字符则认为不是该种编码格式。

QString GetCorrectUnicode(const QByteArray &ba)
{
    QTextCodec::ConverterState state;
    QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    QString text = codec->toUnicode( ba.constData(), ba.size(), &state);
    if (state.invalidChars > 0)
    {
        text = QTextCodec::codecForName( "GBK" )->toUnicode(ba);
    }
    else
    {
        text = ba;
    }

    return text;
}

免责声明:文章转载自《Qt读取TXT文件时,GBK与UTF-8编码判断》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PHP学习(字符串操作)golang解析json配置文件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

springmvc 后端入口参数接收

package controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.R...

ArcGIS API for JavaScript 4.3 与ArcGIS Server联动使用【地图服务】

【前言】 有好些网友问我怎么使用Server发布的地图服务了,其实非常的简单。 我在这里先声明:不提供Server软件,需要的请自行使用互联网搜索资源; 不阐述Server如何发布各各种服务,但是我会给出官方的文档(点我),发布服务其实各种老教程都很多了。 【软件准备】 ·Windows 64位以上的系统,XP可以歇菜了,Server是64位原生软件...

XScreenSaver强大的锁屏工具

source install:  https://www.jwz.org/xscreensaver/   XScreenSaver     Related articles DPMS Xresources List of applications#Screen lockers XScreenSaver is a screen saver and...

关于如何获取剪切板的多个图片处理

  说实话真的没办法,剪切板是个很坑人的东西,它对于放进去的东西就是一次性,如果你想放进去一张图片,然后再塞一张,这是不可能的,但是如果对于不同格式,比如一个是图片格式,一个是文本格式,它是可以放多个不同格式的。   这段时间我也是一直在研究如何来解决这个问题,可是得出来的结论就是:对于你想要将多个图片放在剪切板就只能自己新定义一个剪切板的格式,然后自己识...

tp5+双语言

1.配置 // 是否开启多语言 'lang_switch_on' => true, //多语言列表 'lang_list' => ['id-id','en-us'], // 默认语言 'default_lang' => 'id-id', 2.控制器 &l...

Golang服务器热重启、热升级、热更新(safe and graceful hot-restart/reload http server)详解

服务端代码经常需要升级,对于线上系统的升级常用的做法是,通过前端的负载均衡(如nginx)来保证升级时至少有一个服务可用,依次(灰度)升级。 而另一种更方便的方法是在应用上做热重启,直接更新源码、配置或升级应用而不停服务。 这个功能在重要业务上尤为重要,会影响服务可用性、用户体验。 原理 热重启的原理比较简单,但是涉及到一些系统调用以及父子进程之间文件句...