乱码原因:
QT使用的是utf-8
简体中文版的windows操作系统及其应用软件默认都是ANSI/GBK编码。而且这里应该是宽字符串。
多字节ANISGB
宽字符UNICODE
多字节显示标准字符的时候,十六进制编码对应的ASCILL编码就是标准字符。
宽字符如UNICODE显示标准字符的时候,会在前面(高位)补零。
多字节显示汉字的时候,会看前面一个字节的值,如果这个值大于0x7F那么就会把后面的若干个字节看做是一个字符,比如GB是把本字节和后面的一个字节拿来看做一个字符来显示。UTF-8会把后面的不定个字节拿来当一个字符显示。
宽字符显示汉字时,直接把两个字节的信息看做一个字符拿来显示。
多字节的结束符就是0x00
宽字节的结束符必须是两个连续的0x00才会结束。
解决办法:
//字符串长度
int len;
QStringList str_list;
//excel的第一列内容
for(int i = 0; i < 14; i ++)
{
str_list << pPages[i].str;
}
str_list << "Root密码暗文";
QTextCodec *codec =QTextCodec::codecForName("UTF-8");
//QTextCodec *codec =QTextCodec::codecForLocale();
//sheet->Cell(0,1)->SetInteger(0);
for