Qt在读取文件时,文件内容与当前设置的编码格式不一致时,将导致显示内容是乱码。这里给出判断文件编码格式的方法。
判断编码格式为UTF-8,UTF-16,UTF-32以及GB_2312
Q_ENUMS(TextUniCode)
enum TextUniCode
{
UTF_8, ///< unicode utf-8
UTF_16,///< unicode utf-16
UTF_32,///< unicode utf-32
GB_2312 ///< GB_2312
};
TextUniCode checkDataUniCode(QByteArraytext)
{
if(text.size()>=3&&(quint8)text[0]==0XEF&&(quint8)text[1]==0XBB&&(quint8)text[2]==0XBF)
return UTF_8;
if(text.size()>=4&&
(((quint8)text[0]==0X00&& (quint8)text[1]==0X00 &&(quint8) text[3]==0XFF && (quint8)text[4]==0XFE)||
((quint8)text[0]==0XFF&&(quint8)text[1]==0XFE&& (quint8)text[3]==0X00 && (quint8)text[4]==0X00)))
return UTF_32;
if(text.size()>=2&&(((quint8)text[0]==0XFE&&(quint8)text[1]==0XFF)||((quint8)text[0]==0XFF&&(quint8)text[1]==0XFE)))
return UTF_16;
returnGB_2312;
}
具体原因请参照:
http://blog.csdn.net/baiwfg2/article/details/38701495