Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2340|回复: 3
打印 上一主题 下一主题

邮件解码 乱码问题

[复制链接]

437

主题

566

帖子

2381

积分

金牌会员

Rank: 6Rank: 6

积分
2381
跳转到指定楼层
楼主
发表于 2016-12-12 12:18:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jimu 于 2016-12-12 14:13 编辑

QWebView 查询设置编码

ui.mailWebViewBrowser->settings()->defaultTextEncoding();
settings->setDefaultTextEncoding("UTF-8"); //设置编码格式
这样就成功改变了QwebView的编码格式。
如果html文件是本地的,可以改变html文件的编码格式,将html头文件中的charset换为GB2312或GBK
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />

<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
QWebView如何 自动检测html内容编码?



回复

使用道具 举报

437

主题

566

帖子

2381

积分

金牌会员

Rank: 6Rank: 6

积分
2381
沙发
 楼主| 发表于 2016-12-12 13:58:06 | 只看该作者

  1. bool isgbk(char *s, size_t ns)
  2. {
  3.     if (ns > 2 && (uint8_t)*s >= 0x81 && (uint8_t)*s <= 0xfe
  4.         && (
  5.         ((uint8_t)*(s + 1) >= 0x80 && (uint8_t)*(s + 1) <= 0x7e)
  6.         || ((uint8_t)*(s + 1) >= 0xa1 && (uint8_t)*(s + 1) <= 0xfe)
  7.         )
  8.         )
  9.     {
  10.         return true;
  11.     }
  12.     return false;
  13. }

  14. bool isGBKCode(const string& strIn)
  15. {
  16.     unsigned char ch1;
  17.     unsigned char ch2;

  18.     if (strIn.size() >= 2)
  19.     {
  20.         ch1 = (unsigned char)strIn.at(0);
  21.         ch2 = (unsigned char)strIn.at(1);
  22.         if (ch1 >= 129 && ch1 <= 254 && ch2 >= 64 && ch2 <= 254)
  23.             return true;
  24.         else return false;
  25.     }
  26.     else return false;
  27. }

  28. int isutf8(const char *s, size_t ns)
  29. {
  30.     uint8_t x = 0, i = 0, j = 0, nbytes = 0, n = 0;

  31.     for (i = 1; i < 7; i++)
  32.     {
  33.         x = (uint8_t)(255 << i);
  34.         if (((uint8_t)*s & x) == x)
  35.         {
  36.             n = nbytes = (8 - i);
  37.             for (j = 0; (j < nbytes && j < ns); j++)
  38.             {
  39.                 if ((uint8_t)s[j] <= 0x80 && (uint8_t)s[j] >= 0xc0)break;
  40.                 else n--;
  41.             }
  42.             if (n == 0) return nbytes;
  43.         }
  44.     }
  45.     return 0;
  46. }
复制代码
回复 支持 反对

使用道具 举报

437

主题

566

帖子

2381

积分

金牌会员

Rank: 6Rank: 6

积分
2381
板凳
 楼主| 发表于 2016-12-12 13:58:25 | 只看该作者
QWebView 支持的编码类型:参考QTextCodec
The supported encodings are:
Big5
Big5-HKSCS
CP949
EUC-JP
EUC-KR
GB18030
HP-ROMAN8
IBM 850
IBM 866
IBM 874
ISO 2022-JP
ISO 8859-1 to 10
ISO 8859-13 to 16
Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and Tml
KOI8-R
KOI8-U
Macintosh
Shift-JIS
TIS-620
TSCII
UTF-8
UTF-16
UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE
Windows-1250 to 1258
回复 支持 反对

使用道具 举报

437

主题

566

帖子

2381

积分

金牌会员

Rank: 6Rank: 6

积分
2381
地板
 楼主| 发表于 2016-12-12 14:01:42 | 只看该作者
QWebView 显示本地HTML 文件webView->load(QUrl(QString("file:///c:\\a.html"));  
可能会导致a.html中有些使用相对路径的图片、js文件不能正常加载。
使用如下代码即可
webView->load(QUrl::fromLocalFile("c:\\a.html"));


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-11-26 03:52 , Processed in 0.056957 second(s), 18 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表