`
netfork
  • 浏览: 490444 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Delphi 的HtmlDecode函数扩展

阅读更多
当我们要处理经过HtmlEncode编码过的字符,可以使用HtmlDeCode来解码,但是Delphi自带的对于UNICODE不支持,就像球 中文是"球",这样就没办法转了,现在改写了HttpApp单位的HtmlDeCode函数。

实际办法其实就是知道UNICODE的编码方式,然后delphi的类型WideString来转换,还是看程序吧



function HTMLDecodeEx(const AStr: String): Widestring;  //处理格式转换
var
  Sp, Cp, Tp: PChar;
  Rp:PWideString;
  S: String;
  I, Code: Integer;
begin
  SetLength(Result, Length(AStr));
  Sp := PChar(AStr);
  Rp := PWideString(Result);
  Cp := Sp;
  try
    while Sp^ <> #0 do
    begin
      case Sp^ of
        '&': begin
               Cp := Sp;
               Inc(Sp);
               case Sp^ of
                 'a': if AnsiStrPos(Sp, 'amp;') = Sp then  { do not localize }
                      begin
                        Inc(Sp,3);
                        PInteger(Rp)^ := Integer('&');
                      end;
                 'l',
                 'g': if (AnsiStrPos(Sp, 'lt;') = Sp) or (AnsiStrPos(Sp, 'gt;') = Sp) then { do not localize }
                      begin
                        Cp := Sp;
                        Inc(Sp, 2);
                        while (Sp^ <> ';') and (Sp^ <> #0) do
                          Inc(Sp);
                        if Cp^ = 'l' then
                          PInteger(Rp)^ := Integer('<')
                        else
                          PInteger(Rp)^ := Integer('>');
                      end;
                 'q': if AnsiStrPos(Sp, 'quot;') = Sp then  { do not localize }
                      begin
                        Inc(Sp,4);
                        PInteger(Rp)^ := Integer('"');
                      end;
                 '#': begin
                        Tp := Sp;
                        Inc(Tp);
                        while (Sp^ <> ';') and (Sp^ <> #0) do
                          Inc(Sp);
                        SetString(S, Tp, Sp - Tp);
                        Val(S, I, Code);
                        PInteger(Rp)^ := I;
                      end;
                 else
                   begin
                     result:='';
                     exit;
                   end;
               end;
           end
      else ;
        PInteger(Rp)^ := Integer(Sp^);
      end;
      Inc(PByte(Rp),2);
      Inc(Sp);
    end;
    SetLength(Result, PChar(Rp)-PChar(Result));
  except
    result:='';
  end;
end;
分享到:
评论

相关推荐

    ASP常用函数:HTMLDecode

    ### ASP常用函数: HTMLDecode详解 #### 一、引言 在Web开发中,为了确保网页的安全性和兼容性,通常会使用HTML实体编码来转义一些特殊字符。这些特殊字符包括但不限于`, `&gt;`, `&`, `"`等,在HTML文档中如果不进行...

    HtmlDecode.rar

    而在这个名为"HtmlDecode.rar"的压缩包中,似乎包含了一个反编译的C#代码,以及用C++重写这两个功能的实现。 `HtmlDecode`方法的作用是将HTML实体转换为其原始字符。例如,"&amp;"会被解码为"&","&lt;"会变成","&...

    javascript另类方法实现htmlencode()与htmldecode()函数实例分析

    主要介绍了javascript另类方法实现htmlencode()与htmldecode()函数,结合实例形式分析了javascript字符编码与解码操作的相关技巧,需要的朋友可以参考下

    【ESQL】字串操作函数

    在数据库编程中,字符串操作是一个非常常见的需求,ESQL提供了多种字符串操作函数,以支持数据库应用开发人员在SQL语句中进行字符串处理。 1. 字符串大小写转换 - UPPER或UCASE函数:用于将字符串转换成全部大写...

    delphi编写的HTML编辑器

    Delphi中可以使用`String`或`AnsiString`类型来处理HTML文本,通过内置的字符串函数进行文本操作。对于更复杂的HTML解析和生成,可以借助第三方库如HTMLParser或使用.NET Framework中的`System.Net.WebUtility....

    asp下实现对HTML代码进行转换的函数

    ‘****************************** ‘函数:HTMLEncode(reString) ‘参数:reString,待编码转换处理的字符串 ‘作者:阿里西西 ‘日期:2007/7/15 ‘描述:对HTML代码进行转换 ‘示例:HTMLEncode(“欢迎访问 ...

    java常用函数自己的类库[参照].pdf

    3. `htmlencode()` 和 `htmldecode()` 函数: 这两个函数主要用于HTML字符串的编码和解码。`htmlencode()`将字符串中的双引号替换为`&quot;`,小于号替换为`&lt;`,使得字符串可以在HTML页面上正确显示。`...

    HtmlEncode编码与解码用法定义

    `HTMLDecode`函数则是对`HTMLEncode`函数的逆操作,主要实现如下: 1. **反转义特殊字符**:将`&lt;`还原为`,将`&gt;`还原为`&gt;`,还原`&quot;`为`"`,还原`&#39;`为`'`,使特殊字符恢复到其原本状态。 2. **处理...

    ASP中Server.HTMLEncode用法(附自定义函数)

    为了扩展`Server.HTMLEncode`的功能,有时候我们会自定义一个`HTMLEncode`函数,不仅编码HTML特殊字符,还处理回车和换行等,以保持原始的文本格式。以下是一个自定义`HTMLEncode`函数的例子: ```vb Function ...

    asp.net常用函数表

    在ASP.NET中,有许多常用的函数,这些函数极大地简化了Web开发的过程,提高了开发效率。以下是对ASP.NET常用函数的详细解释: 1. **Response对象**: - `Response.Write()`:在页面输出指定的字符串或变量,常用于...

    asp我认为比较全的函数大全

    下面是对 `HTMLEncode` 和 `HTMLDecode` 函数的解析: ```vbscript Function HTMLEncode(fString) fString = Replace(fString, "&gt;", "&gt;") fString = Replace(fString, ", "&lt;") fString = Replace(fString,...

    asp.net 通用函数代码ToolHelper.rar

    在提供的压缩包“asp.net 通用函数代码ToolHelper.rar”中,我们可以预期找到一些适用于多种场景的ASP.NET自定义函数,这些函数可能极大地提高了开发效率并简化了常见任务的处理。 `ToolHelper`通常是一个包含各种...

    ASP.NET 常用函数表

    11. **HttpServerUtility.HtmlEncode() 和 HtmlDecode()**:这两个函数用于编码和解码HTML,防止XSS(跨站脚本攻击)。 12. **Page.IsPostBack**:该属性用于判断当前页面是否是由于用户操作导致的回发,常用于初始...

    asp.net常用函数表,本人整理为word格式

    在ASP.NET中,开发者经常会遇到各种各样的编程需求,这些需求可以通过使用内置的函数或方法来实现。ASP.NET提供了一套强大的函数库,使得开发者能够高效地构建动态网页和Web应用程序。以下是一些ASP.NET中常用的函数...

    对字符串进行HTML编码和解码的JavaScript函数

    `HtmlDecode`函数完成了这个任务: ```javascript function HtmlDecode(str) { var t = document.createElement("div"); // 创建一个div元素 t.innerHTML = str; // 将编码后的字符串设置到div的innerHTML ...

Global site tag (gtag.js) - Google Analytics