=D3=D0=C8=CE=BA=CE=D2=C9=CE=CA=C7=EB=B5=BD=CD=F8=D5=BE=C1=F4=D1=D4=A3=AC= =BB=F2=B4=F2=B5=E7=BB=B0=D7=C9=D1=AF=A1=A3-------------------------------------------------------在网上找了一个转换的,但只能转英文!有中文的地方仍然是这种符号!<span= style=3D""><strong><span style=3D"font-size: 16pt; font-family: =CB=CE=CC= =E5; color: red; font-weight: normal;">=B7=D2=BA=BD=A3=BA<span lang=3D"EN-U= S"><span style=3D"">&nbsp;&nbsp;&nbsp; </span>网上找的转码方法:function encode($c)

    $len = strlen($c); 
    $a = 0; 
    while ($a < $len)
    {
        $ud=0;
        if (ord($c{$a})>=0&& ord($c{$a})<=127)
        {
            $ud = ord($c{$a}); 
            $a += 1; 
        }
        else if (ord($c{$a}) >=192 && ord($c{$a})<=223)
        {
            $ud = (ord($c{$a})-192)*64 + (ord($c{$a+1})-128); 
            $a += 2; 
        }
        else if (ord($c{$a}) >=224 && ord($c{$a})<=239)
        {
            $ud = (ord($c{$a})-224)*4096 + (ord($c{$a+1})-128)*64 + (ord($c{$a+2})-128); 
            $a += 3; 
        }
        else if (ord($c{$a}) >=240 && ord($c{$a})<=247)
        {
            $ud = (ord($c{$a})-240)*262144 + (ord($c{$a+1})-128)*4096 + (ord($c{$a+2})-128)*64 + (ord($c{$a+3})-128); 
            $a += 4; 
        }
        else if (ord($c{$a}) >=248 && ord($c{$a})<=251)
        {
            $ud = (ord($c{$a})-248)*16777216 + (ord($c{$a+1})-128)*262144 + (ord($c{$a+2})-128)*4096 + (ord($c{$a+3})-128)*64 + (ord($c{$a+4})-128); 
            $a += 5; 
        }
        else if (ord($c{$a}) >=252 && ord($c{$a})<=253)
        {
            $ud = (ord($c{$a})-252)*1073741824 + (ord($c{$a+1})-128)*16777216 + (ord($c{$a+2})-128)*262144 + (ord($c{$a+3})-128)*4096 + (ord($c{$a+4})-128)*64 + (ord($c{$a+5})-128); 
            $a += 6; 
        }
        else if (ord($c{$a}) >=254 && ord($c{$a})<=255)
        { //error
            $ud = false; 
        } 
        $scill .= "&#$ud;";
    } 
    return $scill; 
}

解决方案 »

  1.   

    本帖最后由 xuzuning 于 2009-05-18 11:20:54 编辑
      

  2.   

    这是一个读取邮件的代码返回的东西!
    乱码的部份就是邮件数据里的中文!
    我想做的就是把这些中文给正常的显示出来!
    <p class=3D"MsoNormal" style=3D"background: white none repeat scroll 0% 0%;=
     text-align: center; -moz-background-clip: -moz-initial; -moz-background-or=
    igin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align=3D"=
    center">
    <b><span style=3D"font-size: 14pt; font-family: =CB=CE=CC=E5; color: black;=
    ">=B9=E3=D6=DD</span></b><b><span style=3D"font-size: 14pt; color: black;" =
    lang=3D"EN-US">: 020-39955448 / </span></b><b><span style=3D"font-size: 14p=
    t; font-family: =CB=CE=CC=E5; color: black;">=C9=EE=DB=DA</span></b><b><spa=
    n style=3D"font-size: 14pt; color: black;" lang=3D"EN-US">: 0755-25500501</=
    span></b></p>
      

  3.   

    邮件里面常用就是Base和QP
    --
    抄一段网上的:
    QP编码    规则1:除了换行符,其它任何8位长度的字节必须被表示成一个“=”号加上高四位的十六进制数和低四位的十六进制数,十六进制数是用“0123456789ABCDEF”的ASCII字符码表示,其中“ABCDEF”都必须是大写;    规则2:当8位长度的字节值在33至66(包括33和60),62至126(包括62和126)之间时,直接用该数据对应的ASCII码来表示;   规则3:当8位长度的字节值是9和32时,用该数据对应的ASCII码(9:TAB(HT),32:SPACE)来表示,但若是出现在行尾则必须按规则1进行转换;    规则4:对于CRLF换行符必须用“=0D=0A”来代替;    规则5:QP编码每行不得超过76个字符(不包含最后的“\r\n”两个字符),否则必须换行,换行方法是:在结尾处加上“=\r\n”;    其它:符号“-”不用进行QP编码,所以不要用“-”符号来表示实体之间的分界,最好用“=_”来代替,对于“!”#$[\]^’{|}~”这些字符必须按规则1进行转换. 
      

  4.   

    $s = <<< TEXT
    <p class=3D"MsoNormal" style=3D"background: white none repeat scroll 0% 0%;=
     text-align: center; -moz-background-clip: -moz-initial; -moz-background-or=
    igin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align=3D"=
    center">
    <b><span style=3D"font-size: 14pt; font-family: =CB=CE=CC=E5; color: black;=
    ">=B9=E3=D6=DD</span></b><b><span style=3D"font-size: 14pt; color: black;" =
    lang=3D"EN-US">: 020-39955448 / </span></b><b><span style=3D"font-size: 14p=
    t; font-family: =CB=CE=CC=E5; color: black;">=C9=EE=DB=DA</span></b><b><spa=
    n style=3D"font-size: 14pt; color: black;" lang=3D"EN-US">: 0755-25500501</=
    span></b></p>
    TEXT;
    $p = array('/=([0-9A-F]{2})/', "/=([\r\n]+)/");
    $r = array('%$1', '');
    echo urldecode(preg_replace($p, $r ,$s));<p class="MsoNormal" style="background: white none repeat scroll 0% 0%; text-align: center; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="center">
    <b><span style="font-size: 14pt; font-family: 宋体; color: black;">广州</span></b><b><span style="font-size: 14pt; color: black;" lang="EN-US">: 020-39955448 / </span></b><b><span style="font-size: 14pt; font-family: 宋体; color: black;">深圳</span></b><b><span style="font-size: 14pt; color: black;" lang="EN-US">: 0755-25500501</span></b></p>广州: 020-39955448 / 深圳: 0755-25500501
      

  5.   

    你的代码有点像 quoted printable 编码,应该用 quoted_printable_decode 函数解码,不过我试过以后是乱码