最近获取html源文件碰到需要将其转译字符转为正常的字符,转译字符如下:
up-significant and internationalization characters
显示 名称 编号 显示 名称 编号 显示 名称 编号 显示 名称 编号 显示 名称 编号
" &quot; &#34; & &amp; &#38; < &lt; &#60; > &gt; &#62; Π&OElig; &#338;
œ &oelig; &#339; Š &Scaron; &#352; š &scaron; &#353; Ÿ &Yuml; &#376; ˆ &circ; &#710;
˜ &tilde; &#732; &ensp; &#8194; &emsp; &#8195; &thinsp; &#8201; ‌ &zwnj; &#8204;
‍ &zwj; &#8205; ‎ &lrm; &#8206; ‏ &rlm; &#8207; – &ndash; &#8211; — &mdash; &#8212;
‘ &lsquo; &#8216; ’ &rsquo; &#8217; ‚ &sbquo; &#8218; “ &ldquo; &#8220; ” &rdquo; &#8221;
„ &bdquo; &#8222; † &dagger; &#8224; ‡ &Dagger; &#8225; ‰ &permil; &#8240; ‹ &lsaquo; &#8249;
› &rsaquo; &#8250; € &euro; &#8364;
1、使用WideChar()函数有些可以转,但有些能显示的转出来还是?号?
2、怎么处理有些在delphi中不能显示的字符(Unicode编码)?
有哥们解决过类似问题没?在网上似乎没找到类似的delphi处理的方法参考:http://blog.csdn.net/wyit007/article/details/5950541

解决方案 »

  1.   

    楼主,在这里碰到你啦。。
    有解决方案了没。。
    我是han_haoliang
      

  2.   

    笨一点的办法是把所有的转译字符做个对照表再比较替换,可是还有Unicode编码的delphi编译器里不能显示,无法保存到对照表
      

  3.   

    你这个是用idhttp获取的源码吗?如果是的话,可以用utf8encode函数,把获取的内容编码一下看看?
      

  4.   


    不管它什么编码最终存储方式还是二进制码,你可以定义一个N字节(看你是UCS-2还是UCS-4,前者占2字节后者4字节)的二维数组来保存每个特殊字,把那些特殊转义符号都转成单字节保存,最后逐字节比较
    a: array of array[0..n] of byte;
      

  5.   


    &Dagger;
    &#8240;
    #8240;
    #8240
    8240
    &Dagger;
    &#8240;
    #8240;
    #8240
    8240没有效果。
      

  6.   

    说错了,特殊转义符不用转成单字节,可以利用THashedStringList来保存“码 - 值”的对方方式,这个速度快,例如存储一个双引号就是&quot;=0022其中0022意思是16进制0x0022,我这里说的是UCS-2,UCS-4的话就是00000022
      

  7.   

    &quot;=0022
    请问:
    1:0022怎么得来的? 我已知:&quot;符号
    2:再怎么讲0022转码到原始符号:"