如何在Qt编程中识别是UTF-8还GBK编码
来源:互联网 发布:iis 配置sql server 编辑:程序博客网 时间:2024/06/06 19:29
在最近的项目中,我们需要读取在mp3音乐文件中的metadata。如果大家有兴趣的话,可以参阅我的github项目:
https://github.com/liu-xiao-guo/coverinfo
我们知道,现在的很多流行的软件都可以去修改一个mp3音乐文件的metadata里的内容,比如再Ubuntu系统中的的easytag。当我们存储这些信息的时候,有些人会选取不同的文字编码UTF-8或者是GBK。那么当我们读取这写metadata里的文字时,直接显示,可能会有问题,那么我们怎么来判定是那种编码格式呢?
我的解决办法是编写如下的一个方法:
/ The following function will detect whether the strng is encoded in UTF-8 or GBK
QString SongList::getCorrectUnicode(QString input) {
QTextCodec::ConverterState state;
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QString text = codec->toUnicode( input.toLatin1().constData(),
input.toLatin1().size(), &state);
if (state.invalidChars > 0) {
text = QTextCodec::codecForName( "GBK" )->toUnicode(input.toLatin1());
} else {
text = input;
}
return text;
}
这个方法的目的是把我们读取的metadata里的文字,通过上面的method来检查字符串是否为一个UTF-8的编码,如果不是,我们直接进行转换为unicode。当然我这样处理只是针对中文的情况。如果需要处理其它国家的文字,我们需要用其它的方法来更一步来处理。
https://github.com/liu-xiao-guo/coverinfo
我们知道,现在的很多流行的软件都可以去修改一个mp3音乐文件的metadata里的内容,比如再Ubuntu系统中的的easytag。当我们存储这些信息的时候,有些人会选取不同的文字编码UTF-8或者是GBK。那么当我们读取这写metadata里的文字时,直接显示,可能会有问题,那么我们怎么来判定是那种编码格式呢?
我的解决办法是编写如下的一个方法:
/ The following function will detect whether the strng is encoded in UTF-8 or GBK
QString SongList::getCorrectUnicode(QString input) {
QTextCodec::ConverterState state;
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QString text = codec->toUnicode( input.toLatin1().constData(),
input.toLatin1().size(), &state);
if (state.invalidChars > 0) {
text = QTextCodec::codecForName( "GBK" )->toUnicode(input.toLatin1());
} else {
text = input;
}
return text;
}
这个方法的目的是把我们读取的metadata里的文字,通过上面的method来检查字符串是否为一个UTF-8的编码,如果不是,我们直接进行转换为unicode。当然我这样处理只是针对中文的情况。如果需要处理其它国家的文字,我们需要用其它的方法来更一步来处理。
阅读全文
0 0
- 如何在Qt编程中识别是UTF-8还GBK编码
- 如何选择MySQL数据库中GBK与UTF-8编码
- python中utf-8转GBK编码
- 如何获取一个URL传参编码是UTF-8还是GBK的取巧解决方法
- 判断一个字符串编码是utf-8还是gbk
- 在JSP中 中文的编码详解 gb2312 GBK UTF-8
- java中字符串在 utf-8 gbk unicode 编码下占内存位数
- 关于网页中编码gb2312,big5,gbk,utf-8识别的最新方法的探讨和c++的实现
- MyEclipse如何修改编码Encoding为GBK或UTF-8
- MyEclipse如何修改编码如“GBK”“UTF-8”
- 编码:utf-8,unicode,gbk....
- 字符编码GBK,UTF-8
- UTF-8和GBK编码
- UTF-8和GBK编码
- Java GBK,UTF-8编码
- GBK转UTF-8编码
- GBK、UTF-8、Unicode 编码
- ascii gbk utf-8编码
- R统计模拟
- 使用Unity3D提取王者荣耀英雄模型 VR资源
- Java面试题全集(上)
- SQLSERVER 递归查询
- DOM修改元素
- 如何在Qt编程中识别是UTF-8还GBK编码
- Java之用Serializable序列化对象
- Redis的学习
- java 异常
- Alamofire源码解读系列(九)之响应封装(Response)
- MDwiki 调研
- 线程的生产者消费者模式
- Java/Android引用类型及其使用分析
- Vue.js学习系列二 —— vuex学习实践笔记(附DEMO)