快速业务通道

asp.net2统一搜索引擎关键字编码

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
ot;},
     new string[]{"openfind","utf8","q"},
     new string[]{"alltheweb","utf8","q"},
     new string[]{"lycos","utf8","query"},
     new string[]{"onseek","utf8","q"}
   };
   //搜索引擎名称
   private string _EngineName = "";
   public string EngineName
   {
     get
     {
       return _EngineName;
     }
   }
   //搜索引擎编码
   private string _Coding = "utf8";
   public string Coding
   {
     get
     {
       return _Coding;
     }
   }
   //搜索引擎关键字查询参数名称
   private string _RegexWord = "";
   public string RegexWord
   {
     get
     {
       return _RegexWord;
     }
   }
   private string _Regex = @"(";
#endregion
   #region 搜索引擎关键字
   //建立搜索关键字正则表达式
   public void EngineRegEx(string myString)
   {
     for (int i = 0, j = _Enginers.Length; i < j; i++)
     {
       if (myString.Contains(_Enginers[i][0]))
       {
         _EngineName = _Enginers[i][0];
         _Coding = _Enginers[i][1];
         _RegexWord = _Enginers[i][2];
         _Regex += _EngineName + @"\.+.*[?/&]" + _RegexWord + @"[=:])(?<key>[^&]*)";
         break;
       }
     }
   }
   //得到搜索引擎关键字
   public string SearchKey(string myString)
   {
     EngineRegEx(myString.ToLower());
     if (_EngineName != "")
     {
       Regex myReg = new Regex(_Regex, RegexOptions.IgnoreCase);
       Match matche = myReg.Match(myString);
       myString = matche.Groups["key"].Value;
       //去处表示为空格的+
       myString = myString.Replace("+", " ");
       if (_Coding == "gb2312")
       {
         myString = GetUTF8String(myString);
       }
       else
       {
         myString = Uri.UnescapeDataString(myString);
       }
     }
     return myString;
   }
   //整句转码
   public string GetUTF8String(string myString)
   {
     Regex myReg = new Regex("(?<key>%..%..)", RegexOptions.IgnoreCase);
     MatchCollection matches = myReg.Matches(myString);
     string myWord;
     for (int i = 0, j = matches.Count; i < j; i++)
     {
       myWord = matches[i].Groups["key"].Value.ToString();
       myString = myString.Replace(myWord, GB2312ToUTF8(myWord));
     }
     return myString;
   }
   //单字GB2312转UTF8 URL编码
   public string GB2312ToUTF8(string myString)
   {
     string[] myWord = myString.Split(''%'');
     byte[] myByte = new byte[] { Convert.ToByte(myWord[1], 16), Convert.ToByte(myWord[2], 16) };
    

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号