firemail

标题: 邮件解码 乱码问题 [打印本页]

作者: jimu    时间: 2016-12-12 12:18
标题: 邮件解码 乱码问题
本帖最后由 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内容编码?




作者: jimu    时间: 2016-12-12 13:58

  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. }
复制代码

作者: jimu    时间: 2016-12-12 13:58
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

作者: jimu    时间: 2016-12-12 14:01
QWebView 显示本地HTML 文件webView->load(QUrl(QString("file:///c:\\a.html"));  
可能会导致a.html中有些使用相对路径的图片、js文件不能正常加载。
使用如下代码即可
webView->load(QUrl::fromLocalFile("c:\\a.html"));







欢迎光临 firemail (http://firemail.wang:8088/) Powered by Discuz! X3