<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>爱人-爱人的大杂烩</title>
	<atom:link href="http://ai-2.cn/feed/" rel="self" type="application/rss+xml" />
	<link>http://ai-2.cn</link>
	<description>一切研究的资料库</description>
	<lastBuildDate>Thu, 15 Jul 2010 09:23:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>IE8下eWebEditor按钮不起作用的问题</title>
		<link>http://ai-2.cn/2010/07/ie8-webedit/</link>
		<comments>http://ai-2.cn/2010/07/ie8-webedit/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 09:23:24 +0000</pubDate>
		<dc:creator>csecong</dc:creator>
				<category><![CDATA[js]]></category>
		<category><![CDATA[eWebEditor]]></category>
		<category><![CDATA[Fckeditor]]></category>
		<category><![CDATA[IE8]]></category>
		<category><![CDATA[按钮失效]]></category>
		<category><![CDATA[文本编辑器]]></category>

		<guid isPermaLink="false">http://ai-2.cn/?p=237</guid>
		<description><![CDATA[hoo～IE8下面发现eWebEditor的按钮都没法点了，改吧-_-~ 在eWebEditor的目录里找到Editor.js文件，路径是webedit\Include\Editor.js 用editplus打开找到代码： if (element.YUSERONCLICK) eval(element.YUSERONCLICK + &#8220;anonymous()&#8221;); 替换成 if(navigator.appVersion.match(/8./i)==&#8217;8.&#8217;) { if (element.YUSERONCLICK) eval(element.YUSERONCLICK + &#8220;onclick(event)&#8221;); } else { if (element.YUSERONCLICK) eval(element.YUSERONCLICK + &#8220;anonymous()&#8221;); } 看来以后该换个网页文本编辑器了，比如Fckeditor]]></description>
			<content:encoded><![CDATA[<p>hoo～IE8下面发现eWebEditor的按钮都没法点了，改吧-_-~</p>
<p>在eWebEditor的目录里找到Editor.js文件，路径是webedit\Include\Editor.js  用editplus打开找到代码：</p>
<p>if (element.YUSERONCLICK) eval(element.YUSERONCLICK + &#8220;anonymous()&#8221;);</p>
<p>替换成</p>
<p>if(navigator.appVersion.match(/8./i)==&#8217;8.&#8217;)<br />
{<br />
if (element.YUSERONCLICK) eval(element.YUSERONCLICK + &#8220;onclick(event)&#8221;);<br />
}<br />
else<br />
{<br />
if (element.YUSERONCLICK) eval(element.YUSERONCLICK + &#8220;anonymous()&#8221;);<br />
}</p>
<p>看来以后该换个网页文本编辑器了，比如Fckeditor</p>
]]></content:encoded>
			<wfw:commentRss>http://ai-2.cn/2010/07/ie8-webedit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>今天注册了网易的域名邮箱，顺便送大家两个邀请码</title>
		<link>http://ai-2.cn/2010/04/ym-163/</link>
		<comments>http://ai-2.cn/2010/04/ym-163/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 03:46:18 +0000</pubDate>
		<dc:creator>csecong</dc:creator>
				<category><![CDATA[IT信息]]></category>
		<category><![CDATA[免费邮箱]]></category>
		<category><![CDATA[域名邮箱]]></category>
		<category><![CDATA[网易域名邮箱]]></category>
		<category><![CDATA[邀请码]]></category>

		<guid isPermaLink="false">http://ai-2.cn/?p=227</guid>
		<description><![CDATA[每个账户3G的空间，支持pop3和smtp，很好
注册成功送了三个邀请码，贡献出来两个，先到先得^_^]]></description>
			<content:encoded><![CDATA[<p>域名邮箱用起来挺不错的^_^，现在支持200个账户，据说还能开无限账户的？</p>
<p>每个账户3G的空间，支持pop3和smtp，很好</p>
<p>注册成功送了三个邀请码，贡献出来两个，先到先得^_^</p>
<p><span style="text-decoration: line-through;">wTWsDuvP</span></p>
<p><span style="text-decoration: line-through;">PNLPPZKO</span></p>
<div id="attachment_228" class="wp-caption alignnone" style="width: 540px"><a href="http://ai-2.cn/wp-content/uploads/2010/04/未标题-1.gif"><img class="size-full wp-image-228" title="今天注册了网易的域名邮箱" src="http://ai-2.cn/wp-content/uploads/2010/04/未标题-1.gif" alt="今天注册了网易的域名邮箱" width="530" height="192" /></a><p class="wp-caption-text">今天注册了网易的域名邮箱</p></div>
<p><span style="color: #ff0000;">网易已开放免费注册，不需要邀请码了^_^</span></p>
]]></content:encoded>
			<wfw:commentRss>http://ai-2.cn/2010/04/ym-163/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>让google voice短信支持中文</title>
		<link>http://ai-2.cn/2010/04/googlevoice-cn/</link>
		<comments>http://ai-2.cn/2010/04/googlevoice-cn/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 07:08:37 +0000</pubDate>
		<dc:creator>csecong</dc:creator>
				<category><![CDATA[windows mobile]]></category>
		<category><![CDATA[操作系统]]></category>
		<category><![CDATA[google voice]]></category>
		<category><![CDATA[windows mobile 客户端]]></category>
		<category><![CDATA[中文短信]]></category>

		<guid isPermaLink="false">http://ai-2.cn/?p=220</guid>
		<description><![CDATA[通过安装客户端工具的方法实现，详情见内容]]></description>
			<content:encoded><![CDATA[<p>想从google那边寻求支持似乎是个遥遥无期的等待了，我们自己想一些办法凑合一下？，比如中文加密发送然后客户端解密<br />
于是本文诞生了</p>
<p>方法：发送时直接urlencode编码，手机安装客户端进行urldecode操作解密</p>
<p>下载手机客户端软件 <a href="http://ai-2.cn/tools/sms/gv-cn.rar">windows mobile版本</a></p>
<p>下载后放到手机上运行，然后收到加密的中文短信会自动解密</p>
<p>短信发送地址 <del datetime="2010-04-17T00:43:40+00:00">http://ai-2.cn/tools/sms/</del>(垃圾短信过多，暂时停止在线短信，如有需要请联系)</p>
<p>暂时为演示版，只为实现功能，正式版有空再做吧</p>
]]></content:encoded>
			<wfw:commentRss>http://ai-2.cn/2010/04/googlevoice-cn/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>强大的图片验证码识别代码</title>
		<link>http://ai-2.cn/2010/03/validcodeshibie/</link>
		<comments>http://ai-2.cn/2010/03/validcodeshibie/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 07:55:02 +0000</pubDate>
		<dc:creator>csecong</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[图片验证码]]></category>
		<category><![CDATA[字符识别]]></category>
		<category><![CDATA[验证码识别]]></category>

		<guid isPermaLink="false">http://ai-2.cn/?p=213</guid>
		<description><![CDATA[今天想刷个投票页面，需要识别验证码，网上搜啊，找到一个图片验证码识别类，改动一下用起来很舒服啊^_^ 因为每种类验证码的字符表都不一样，所以需要事先得到此种验证码的字符表 方法呢，就是在调试模式输出一下就看到了 代码如下 UnCodeBase.cs using System; using System.Collections.Generic; using System.Text; using System.Collections; using System.Drawing; using System.Drawing.Imaging; using System.Runtime.InteropServices; namespace BallotAiying2 { class UnCodebase { public Bitmap bmpobj; public UnCodebase(Bitmap pic) { // if (pic.PixelFormat == PixelFormat.Format8bppIndexed) bmpobj = new Bitmap(pic); //转换为Format32bppRgb } /// /// 根据RGB，计算灰度值 /// /// Color值 /// 灰度值，整型 private int GetGrayNumColor(System.Drawing.Color posClr) [...]]]></description>
			<content:encoded><![CDATA[<p>今天想刷个投票页面，需要识别验证码，网上搜啊，找到一个图片验证码识别类，改动一下用起来很舒服啊^_^<br />
因为每种类验证码的字符表都不一样，所以需要事先得到此种验证码的字符表<br />
方法呢，就是在调试模式输出一下就看到了<br />
代码如下<br />
UnCodeBase.cs</p>
<pre lang="C#" line="1">using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Drawing;
using System.Drawing.Imaging;
using System.Runtime.InteropServices;

namespace BallotAiying2
{
    class UnCodebase
    {
        public Bitmap bmpobj;
        public UnCodebase(Bitmap pic)
        {
            //       if (pic.PixelFormat == PixelFormat.Format8bppIndexed)
            bmpobj = new Bitmap(pic);    //转换为Format32bppRgb
        }

        ///
<summary>
        /// 根据RGB，计算灰度值
        /// </summary>

        ///
<param name="posClr">Color值</param>
        /// <returns>灰度值，整型</returns>
        private int GetGrayNumColor(System.Drawing.Color posClr)
        {
            return (posClr.R * 19595 + posClr.G * 38469 + posClr.B * 7472) >> 16;
        }

        ///
<summary>
        /// 灰度转换,逐点方式
        /// </summary>

        public void GrayByPixels()
        {
            for (int i = 0; i < bmpobj.Height; i++)
            {
                for (int j = 0; j < bmpobj.Width; j++)
                {
                    int tmpValue = GetGrayNumColor(bmpobj.GetPixel(j, i));
                    bmpobj.SetPixel(j, i, Color.FromArgb(tmpValue, tmpValue, tmpValue));
                }
            }
        }

        ///
<summary>
        /// 去图形边框
        /// </summary>

        ///
<param name="borderWidth"></param>
        public void ClearPicBorder(int borderWidth)
        {
            for (int i = 0; i < bmpobj.Height; i++)
            {
                for (int j = 0; j < bmpobj.Width; j++)
                {
                    if (i < borderWidth || j < borderWidth || j > bmpobj.Width - 1 - borderWidth || i > bmpobj.Height - 1 - borderWidth)
                        bmpobj.SetPixel(j, i, Color.FromArgb(255, 255, 255));
                }
            }
        }

        ///
<summary>
        /// 灰度转换,逐行方式
        /// </summary>

        public void GrayByLine()
        {
            Rectangle rec = new Rectangle(0, 0, bmpobj.Width, bmpobj.Height);
            BitmapData bmpData = bmpobj.LockBits(rec, ImageLockMode.ReadWrite, bmpobj.PixelFormat);// PixelFormat.Format32bppPArgb);
            //    bmpData.PixelFormat = PixelFormat.Format24bppRgb;
            IntPtr scan0 = bmpData.Scan0;
            int len = bmpobj.Width * bmpobj.Height;
            int[] pixels = new int[len];
            Marshal.Copy(scan0, pixels, 0, len);

            //对图片进行处理
            int GrayValue = 0;
            for (int i = 0; i < len; i++)
            {
                GrayValue = GetGrayNumColor(Color.FromArgb(pixels[i]));
                pixels[i] = (byte)(Color.FromArgb(GrayValue, GrayValue, GrayValue)).ToArgb();      //Color转byte
            }

            bmpobj.UnlockBits(bmpData);

            ////输出
            //GCHandle gch = GCHandle.Alloc(pixels, GCHandleType.Pinned);
            //bmpOutput = new Bitmap(bmpobj.Width, bmpobj.Height, bmpData.Stride, bmpData.PixelFormat, gch.AddrOfPinnedObject());
            //gch.Free();
        }

        ///
<summary>
        /// 得到有效图形并调整为可平均分割的大小
        /// </summary>

        ///
<param name="dgGrayValue">灰度背景分界值</param>
        ///
<param name="CharsCount">有效字符数</param>
        /// <returns></returns>
        public void GetPicValidByValue(int dgGrayValue, int CharsCount)
        {
            int posx1 = bmpobj.Width; int posy1 = bmpobj.Height;
            int posx2 = 0; int posy2 = 0;
            for (int i = 0; i < bmpobj.Height; i++)      //找有效区
            {
                for (int j = 0; j < bmpobj.Width; j++)
                {
                    int pixelValue = bmpobj.GetPixel(j, i).R;
                    if (pixelValue < dgGrayValue)     //根据灰度值
                    {
                        if (posx1 > j) posx1 = j;
                        if (posy1 > i) posy1 = i;

                        if (posx2 < j) posx2 = j;
                        if (posy2 < i) posy2 = i;
                    };
                };
            };
            // 确保能整除
            int Span = CharsCount - (posx2 - posx1 + 1) % CharsCount;   //可整除的差额数
            if (Span < CharsCount)
            {
                int leftSpan = Span / 2;    //分配到左边的空列 ，如span为单数,则右边比左边大1
                if (posx1 > leftSpan)
                    posx1 = posx1 - leftSpan;
                if (posx2 + Span - leftSpan < bmpobj.Width)
                    posx2 = posx2 + Span - leftSpan;
            }
            //复制新图
            Rectangle cloneRect = new Rectangle(posx1, posy1, posx2 - posx1 + 1, posy2 - posy1 + 1);
            bmpobj = bmpobj.Clone(cloneRect, bmpobj.PixelFormat);
        }

        ///
<summary>
        /// 得到有效图形,图形为类变量
        /// </summary>

        ///
<param name="dgGrayValue">灰度背景分界值</param>
        ///
<param name="CharsCount">有效字符数</param>
        /// <returns></returns>
        public void GetPicValidByValue(int dgGrayValue)
        {
            int posx1 = bmpobj.Width; int posy1 = bmpobj.Height;
            int posx2 = 0; int posy2 = 0;
            for (int i = 0; i < bmpobj.Height; i++)      //找有效区
            {
                for (int j = 0; j < bmpobj.Width; j++)
                {
                    int pixelValue = bmpobj.GetPixel(j, i).R;
                    if (pixelValue < dgGrayValue)     //根据灰度值
                    {
                        if (posx1 > j) posx1 = j;
                        if (posy1 > i) posy1 = i;

                        if (posx2 < j) posx2 = j;
                        if (posy2 < i) posy2 = i;
                    };
                };
            };
            //复制新图
            Rectangle cloneRect = new Rectangle(posx1, posy1, posx2 - posx1 + 1, posy2 - posy1 + 1);
            bmpobj = bmpobj.Clone(cloneRect, bmpobj.PixelFormat);
        }

        ///
<summary>
        /// 得到有效图形,图形由外面传入
        /// </summary>

        ///
<param name="dgGrayValue">灰度背景分界值</param>
        ///
<param name="CharsCount">有效字符数</param>
        /// <returns></returns>
        public Bitmap GetPicValidByValue(Bitmap singlepic, int dgGrayValue)
        {
            int posx1 = singlepic.Width; int posy1 = singlepic.Height;
            int posx2 = 0; int posy2 = 0;
            for (int i = 0; i < singlepic.Height; i++)      //找有效区
            {
                for (int j = 0; j < singlepic.Width; j++)
                {
                    int pixelValue = singlepic.GetPixel(j, i).R;
                    if (pixelValue < dgGrayValue)     //根据灰度值
                    {
                        if (posx1 > j) posx1 = j;
                        if (posy1 > i) posy1 = i;

                        if (posx2 < j) posx2 = j;
                        if (posy2 < i) posy2 = i;
                    };
                };
            };
            //复制新图
            Rectangle cloneRect = new Rectangle(posx1, posy1, posx2 - posx1 + 1, posy2 - posy1 + 1);
            return singlepic.Clone(cloneRect, singlepic.PixelFormat);
        }

        ///
<summary>
        /// 平均分割图片
        /// </summary>

        ///
<param name="RowNum">水平上分割数</param>
        ///
<param name="ColNum">垂直上分割数</param>
        /// <returns>分割好的图片数组</returns>
        public Bitmap [] GetSplitPics(int RowNum,int ColNum)
        {
            if (RowNum == 0 || ColNum == 0)
                return null;
            int singW = bmpobj.Width / RowNum;
            int singH = bmpobj.Height / ColNum;
            Bitmap [] PicArray=new Bitmap[RowNum*ColNum];

            Rectangle cloneRect;
            for (int i = 0; i < ColNum; i++)      //找有效区
            {
                for (int j = 0; j < RowNum; j++)
                {
                    cloneRect = new Rectangle(j*singW, i*singH, singW , singH);
                    PicArray[i*RowNum+j]=bmpobj.Clone(cloneRect, bmpobj.PixelFormat);//复制小块图
                }
            }
            return PicArray;
        }

        ///
<summary>
        /// 返回灰度图片的点阵描述字串，1表示灰点，0表示背景
        /// </summary>

        ///
<param name="singlepic">灰度图</param>
        ///
<param name="dgGrayValue">背前景灰色界限</param>
        /// <returns></returns>
        public string GetSingleBmpCode(Bitmap singlepic, int dgGrayValue)
        {
            Color piexl;
            string code = "";
            for (int posy = 0; posy < singlepic.Height; posy++)
                for (int posx = 0; posx < singlepic.Width; posx++)
                {
                    piexl = singlepic.GetPixel(posx, posy);
                    if (piexl.R < dgGrayValue)    // Color.Black )
                        code = code + "1";
                    else
                        code = code + "0";
                }
            return code;
        }

    }

}</pre>
<p>unCodeAiYing.cs</p>
<pre lang="C#" line="1">using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;

namespace BallotAiying2
{
    class unCodeAiYing : UnCodebase
    {
        //字符表
        string[,] CodeArray = new string[,] {{"1","00100111000010000100001000010000100001000010011111"},
{"4","000100000100001100010100100100100100111111000100000100001111"},
{"B","1111110010000101000010100010011110001000100100001010000101000011111110"},
{"N","1110111011001001100100101010010101001010100100110010011001001101110010"},
{"0","011110100001100001101101101101101101101101100001100001011110"},
{"M","111011011011011011011011010101010101010101010101010101110101"},
{"F","1111110010000101001000100100011110001001000100100010000001000001110000"},
{"E","1111110010000101001000100100011110001001000100100010000001000011111110"},
{"A","0001000000100000101000010100001010000101000111110010001001000101110111"},
{"G","001111010001100001100000100000100000100011100001010001001110"},
{"K","1110111010001001001000101000011100001010000100100010010001000101110111"},
{"T","1111111100100100010000001000000100000010000001000000100000010000011100"},
{"C","0011111010000110000011000000100000010000001000000100000101000100011100"},
{"4","00010000100011001010100101001011111000100001000111"},
{"9","011100100010100001100001100011011101000001000001100010011100"},
{"S","011111100001100001100000011000000110000001100001100001111110"},
{"Z","111111100010000010000100000100001000001000010000010001111111"},
{"3","011110100001100001000010001100000010000001100001100001011110"},
{"M","1110111011011001101100110110010101001010100101010010101001010101101011"},
{"Q","0011100010001010000011000001100000110000011000001101100101001100011101"},
{"L","1110000010000001000000100000010000001000000100000010000001000011111111"},
{"W","1101011010101001010100101010010101001101100010100001010000101000010100"},
{"D","111110010001010000010000010000010000010000010000010001111110"},
{"I","11111001000010000100001000010000100001000010011111"},
{"U","1110111010001001000100100010010001001000100100010010001001000100011100"},
{"6","00111010001000010000101111100010000100001000001111"},
{"B","111111010000010000010001011110010001010000010000010000111111"},
{"8","011110100001100001100001011110010010100001100001100001011110"},
{"P","1111110010000101000010100001011111001000000100000010000001000001110000"},
{"N","111011011001011001010101010101010101010011010011010011111001"},
{"X","1110111010001000101000010100000100000010000010100001010001000101110111"},
{"X","111011010001001010001010000100000100001010001010010001111011"},
{"D","1111100010001001000010100001010000101000010100001010000101000101111100"},
{"U","111011010001010001010001010001010001010001010001010001001110"},
{"H","1110111010001001000100100010011111001000100100010010001001000101110111"},
{"R","1111100010001001000100100010011110001010000100100010010001000101110011"},
{"V","111011010001010001010001001010001010001010001010000100000100"},
{"O","0011100010001010000011000001100000110000011000001100000101000100011100"},
{"T","111111100100000100000100000100000100000100000100000100001110"},
{"2","011110100001100001000001000010000100001000010000100001111111"},
{"6","001110010001100000100000101110110001100001100001100001011110"},
{"Z","11111100010000100010000100010000100010000100011111"},
{"Y","111011010001010001001010001010000100000100000100000100001110"},
{"Y","1110111010001001000100010100001010000010000001000000100000010000011100"},
{"5","11111100001000010111110000000000000100001000001111"},
{"R","111110010001010001010001011110010100010010010010010001111001"},
{"W","110101010101010101010101010101011011001010001010001010001010"},
{"H","111011010001010001010001011111010001010001010001010001111011"},
{"5","111111100000100000101110110001000001000001100001100001011110"},
{"V","1110111010001001000100100010001010000101000010100001010000010000001000"},
{"J","001111000010000010000010000010000010000010000010100010111100"},
{"7","111111100010100010000100000100001000001000001000001000001000"},
{"O","001110010001100000100000100000100000100000100000010001001110"},
{"F","111111010000010010010010011110010010010010010000010000111000"},
{"C","001111010000100000100000100000100000100000100000010001001110"},
{"Q","001110010001100000100000100000100000100000101100010011001110"},
{"J","0011111000010000001000000100000010000001000000100000010010001001111000"},
{"9","01110100011000010000100010111000000000001000101110"}};

        public unCodeAiYing(Bitmap pic)
            : base(pic)
        {
        }

        public string getPicnum()
        {
            GrayByPixels(); //灰度处理
            GetPicValidByValue(128, 4); //得到有效空间
            Bitmap[] pics = GetSplitPics(4, 1);     //分割

            if (pics.Length != 4)
            {
                return ""; //分割错误
            }
            else  // 重新调整大小
            {
                pics[0] = GetPicValidByValue(pics[0], 128);
                pics[1] = GetPicValidByValue(pics[1], 128);
                pics[2] = GetPicValidByValue(pics[2], 128);
                pics[3] = GetPicValidByValue(pics[3], 128);
            }

            //      if (!textBoxInput.Text.Equals(""))
            string result = "";
            string dddd = "";
            char singleChar = ' ';
            {
                for (int i = 0; i < 4; i++)
                {
                    string code = GetSingleBmpCode(pics[i], 128);   //得到代码串
                    System.Diagnostics.Debug.WriteLine(code);
                    for (int arrayIndex = 0; arrayIndex < CodeArray.Length/2; arrayIndex++)
                    {
                        if (CodeArray[arrayIndex,1].Equals(code))  //相等
                        {
                            dddd = CodeArray[arrayIndex, 0];
                            //if (arrayIndex < 10)   // 0..9
                            //    singleChar = (char)(48 + arrayIndex);
                            //else if (arrayIndex < 36) //A..Z
                            //    singleChar = (char)(65 + arrayIndex - 10);
                            //else
                            //    singleChar = (char)(97 + arrayIndex - 36);
                            //result = result + singleChar;
                            result = result + dddd;
                        }
                    }
                }
            }
           return result;
        }
    }
}</pre>
<p>使用方式</p>
<pre lang="C#" line="1">HtmlDocument doc = webBrowser1.Document;
              //  IHTMLDocument2 doc2 = (IHTMLDocument2)webBrowser1.Document.DomDocument;
                //      HtmlElement ImgeTag =(HtmlElement) doc2.images.item(0, 0);

                HtmlElement ImgeTag = doc.Forms[0].GetElementsByTagName("IMG")[0];

                Image numPic = GetWebImage(webBrowser1, ImgeTag); // 得到验证码图片
                pictureBox1.Image = numPic;
                unCodeAiYing UnCheckobj = new unCodeAiYing((Bitmap)numPic);
                string strNum = UnCheckobj.getPicnum();     //识别图片
                System.Diagnostics.Debug.WriteLine(strNum);
                for (int i = 0; i < doc.All.Count; i++)
                {
                    if (doc.All[i].TagName.ToUpper().Equals("INPUT"))
                    {
                        switch (doc.All[i].Name)
                        {
                            case "Vcode":
                                doc.All[i].InnerText = strNum;
                                break;
                            case "Submit":
                                ClickBtn = doc.All[i]; //提交
                                break;
                        }
                    }

                }
                ClickBtn.InvokeMember("Click");   //执行按扭操作</pre>
]]></content:encoded>
			<wfw:commentRss>http://ai-2.cn/2010/03/validcodeshibie/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>备案网站miibeian.gov.cn打不开的解决办法</title>
		<link>http://ai-2.cn/2010/03/miibeianip/</link>
		<comments>http://ai-2.cn/2010/03/miibeianip/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 07:40:15 +0000</pubDate>
		<dc:creator>csecong</dc:creator>
				<category><![CDATA[站长工具]]></category>
		<category><![CDATA[备案]]></category>
		<category><![CDATA[打不开网站]]></category>

		<guid isPermaLink="false">http://ai-2.cn/?p=211</guid>
		<description><![CDATA[最近一直打不开信产部备案网站，测试了一下可以用以下几个地址访问，速度超快]]></description>
			<content:encoded><![CDATA[<p>最近一直打不开信产部备案网站，测试了一下可以用以下几个地址访问，速度超快</p>
<p><a href="http://211.94.161.70/" target="_blank">http://211.94.161.70/</a></p>
<p><a href="http://219.143.225.7/" target="_blank">http://219.143.225.7/</a></p>
<p><a href="http://202.108.212.199/" target="_blank">http://202.108.212.199/</a></p>
<p><a href="http://202.108.212.210/" target="_blank">http://202.108.212.210/</a></p>
<p>以上几个都可以试试，看哪个速度快吧</p>
<p>测试好以后，可以通过更改host文件的方式一直使用这个ip</p>
<p>打开C:\WINDOWS\system32\drivers\etc目录下的hosts文件，将可以访问的ip写进去，比如</p>
<p>www.miibeian.gov.cn 211.94.161.70</p>
]]></content:encoded>
			<wfw:commentRss>http://ai-2.cn/2010/03/miibeianip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>asp日期函数大全</title>
		<link>http://ai-2.cn/2010/01/asp-time/</link>
		<comments>http://ai-2.cn/2010/01/asp-time/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 09:22:55 +0000</pubDate>
		<dc:creator>csecong</dc:creator>
				<category><![CDATA[asp]]></category>
		<category><![CDATA[日期函数]]></category>

		<guid isPermaLink="false">http://ai-2.cn/?p=200</guid>
		<description><![CDATA[asp日期函数
每个均有样例帮助理解]]></description>
			<content:encoded><![CDATA[<p>1. Now 传回系统的日期及时间。<br />
例：Now   传回值：2002/11/2 10:23:30 AM</p>
<p>2. Date 传回系统的日期。<br />
例：Date   传回值：2002/11/2</p>
<p>3. Time 传回系统的时间。<br />
例：Time   传回值：10;23:30 AM</p>
<p>4. Year 传回系统的年份。<br />
例：Year(Now)   传回值：2002</p>
<p>5. Month 传回系统的月份。<br />
例：Month(Now)   传回值：11</p>
<p>6. Weekday 传回系统的星期几的数字。<br />
使用方法：Weekday(1-3的时间函式,[星期天的开始数字])<br />
例：Weekday(Now,7)   传回值：14<br />
备注：若不设定开始数字，则星期天为1，&#8230;..星期六为7。设定了则由星期天累加。</p>
<p>7. Day 传回系统的日子。<br />
例：Day(Now)   传回值：2</p>
<p>8. Hour 传回系统的小时。<br />
例：Hour(Now)   传回值：11</p>
<p>9. Minute 传回系统的分钟。<br />
例：Minute(Now)   传回值：23</p>
<p>10. Second 传回系统的秒。<br />
例：Second(Now)   传回值：30</p>
<p>11. Cdate 转换成日期变量型态。例：Cdate(Now)   传回值：2002/11/2 10:23:30 AM</p>
<p>12.DateAdd 用以计算时差，即时间加减。</p>
<p>使用方法：DateAdd(&#8220;时间代码&#8221;,加减数,日期表达式)</p>
<p>例：DateAdd(&#8220;H&#8221;,2,Now)   传回值：2002/11/2 12:23:30 AM</p>
<p>13. DateDiff 计算两段时间差距。</p>
<p>使用方法：DateDiff(&#8220;时间代码&#8221;,日期表达式1,日期表达式2)</p>
<p>例：DateDiff(&#8220;H&#8221;,&#8221;2002/11/2 12:23:30 AM&#8221;,Now)   传回值：2</p>
<p>14. DatePart 传回一个日期中的一部分。</p>
<p>使用方法：DatePart(&#8220;时间代码&#8221;,日期表达式)</p>
<p>例：Part(&#8220;H&#8221;,Now)   传回值：10</p>
<p>15. DateSerial 转换三个参数为日期形态。</p>
<p>使用方法：DateSerial(年,月,日)</p>
<p>例：DateSerial(2002,11,2)   传回值：2002/11/2</p>
<p>17. IsDate 检查变量是否为日期形态或字符串可否转成日期。</p>
<p>18. MonthName 传回月份的名称。</p>
<p>使用方法：MonthName(&#8220;日期字符串&#8221;)</p>
<p>例：MonthName(Now)   传回值：November</p>
<p>19. TimeSerial 转换三个参数为时间形态。</p>
<p>使用方法：TimeSerial(时,分,秒)</p>
<p>例：TimeSerial(10,23,30)   传回值：10:23:30</p>
<p>20. WeekDayName 传回周几的名称。</p>
<p>使用方法：WeekDayName(&#8220;日期字符串&#8221;)</p>
<p>例：WeekDayName(Now)   传回值：Saturday</p>
<p>【备注】</p>
<p>以上内容皆假设该时间为</p>
<p>2002年11月2日上午10时23分30秒星期六</p>
<p>[...]内的参数可有可无。</p>
<p>时间代码(表达式)：</p>
<p>yyyy 年</p>
<p>q 季</p>
<p>n 月</p>
<p>d 日</p>
<p>w 星期</p>
<p>h 时</p>
<p>m 分</p>
<p>s 秒</p>
<p>ASP日期和时间函数&#8230;..<br />
ASP日期和时间函数&lt;%=year(now)%&gt;年&lt;%=month(now)%&gt;月&lt;%=day(now)%&gt;日 &lt;%=weekdayname(weekday(now))%&gt;<br />
显示：<br />
今日是： 2003年10月31日 星期五</p>
<p>VBScript有许多函数，使你可以得到各种格式的日期和时间。你已经用过了这些函数中的一个。你可以用函数NOW返回当前的日期和时间：</p>
<p>At the tone,the time will bi: &lt;%=NOW%&gt;</p>
<p>你应该注意，返回的日期和时间是你的Web服务器的系统时钟的日期和时间。如果身处纽约的某个人在看你的网页，他看到的日期和时间与她当地的日期和时间也许是不一至的。</p>
<p>函数NOW同时返回日期和时间。如果你只想返回当前日期，你可以使用函数DATE。如果你只想返回当前时间，你可以使用函数TIME。例如：</p>
<p>The date is :&lt;%=DATE%&gt;</p>
<p>The time is :&lt;%=TIME%&gt;</p>
<p>操作日期</p>
<p>使用函数MONTH(),DAY(),WEEKDAY(),和YEAR(),你可以把一个日期分割成更小的部分。所有这些函数都以一个日期表达式作为参数，并返回一个数字。这里有一个如何使用这些函数的例子：</p>
<p>The Month is :&lt;%=MONTH(DATE)%&gt;</p>
<p>&lt;BR&gt;</p>
<p>The Day is : &lt;%=DAY(DATE)%&gt;</p>
<p>&lt;BR&gt;</p>
<p>The weekday is :&lt;%=WEEKDAY(DATE)%&gt;</p>
<p>&lt;BR&gt;</p>
<p>The year is :&lt;%=YEAR(DATE)%&gt;</p>
<p>假设当前日期是1997年8月9日，星期三。如果你把上面的例子包含在一个ASP网页中，在浏览器中将显示如下的文字：</p>
<p>The Month is : 7</p>
<p>The Day is : 9</p>
<p>The weekday is : 4</p>
<p>The year is : 1997</p>
<p>注意函数weekday()假定一个星期的第一天是星期日。如果你想把星期一作为一周的第一天，你可以使用如下的语句：</p>
<p>The weekday is :&lt;%=weekday(DATE,vbWednesday)%&gt;</p>
<p>你可以把任何一天作为一周的第一天。要指定一周的第一天是星期几，只要用vbSunday,vbMonday,vbTusday,vbWednesday,vbThurday,vbFriday或vbSaturday代替函数WEEKDAY（）的第二个参数即可。</p>
<p>你不单可以用函数DATE作为这些函数的参数。你也可以提供一个日期字符串或者一个日期常数作为参数，如下例所示：</p>
<p>The weekday is :&lt;%=WEEKDAY(#12/25/2000#)%&gt;</p>
<p>The weekday is :&lt;%=WEEKDAY(“12-25-2000”)%&gt;</p>
<p>这 两个函数都返回2000年圣诞节这一天是星期几。（这也许使你不习惯：返回值是2，代表星期一。）表达式#12/25/2000#是一个日期常数，日期常 数总是括在字符’＃’中。表达式”12-25-2000”是一个日期字符串。用这两种方法为函数提供一个日期都是可行的。</p>
<p>要以更加易读的形式返回月份和星期几，你可以使用函数WEEKDAYNAME（）或MONTHNAME（）。这两个函数返回的是字符串。这里有一个使用这两个函数的例子：</p>
<p>The month is :&lt;%=MONTHNAME(MONTH(DATE))%&gt;</p>
<p>The weekday is:&lt;%=WEEKDAYNAME(WEEKDAY(DATE))%&gt;</p>
<p>假设当前日期是八月，星期三。在这种情况下，第一个函数将返回字符串July，第二个函数返回字符串Wednesday。你可以把1到12之间的任何整数作为函数MONTHNAME（）的参数，你可以把1到7之间的任何整数作为函数WEEKDAYNAME（）的参数。</p>
<p>在 缺省情况下，这两个函数不会缩写返回的字符串。函数MONTHNAME（）返回的是July而不是Jul，函数WEEKDAYNAME()返回的是 Wednesday而不是Wed。然而，通过指定第二个参数为TRUE，你可以强制这两个函数返回缩写的字符串。（TRUE表示要缩写，FALSE表示不 缩写。）如下例所示：</p>
<p>The month is: &lt;%=MONTHNAME(MONTH(DATE),TRUE)%&gt;</p>
<p>The weekday is: &lt;%=WEEKDAYNAME(WEEKDAY(DATE),TRUE)%&gt;</p>
<p>操作时间</p>
<p>你也可以把时间分割成更小的部分。通过函数HOUR(),MINUTE(),和SECOND()，你可以返回时间的不同部分。下面是使用这些函数的一些例子以及可能的返回值：</p>
<p>The hour is:&lt;%=HOUR(TIME)%&gt;</p>
<p>The hour is:21</p>
<p>The minute is:&lt;%=MINUTE(TIME)%&gt;</p>
<p>The minute is:39</p>
<p>The second is:&lt;%=SECOND(TIME)%&gt;</p>
<p>The second is:34</p>
<p>函数HOUR()返回一个0到23之间的整数（0点是午夜后的一个小时）。函数MINUTE()返回一个0到59之间的整数。函数SECOND()也返回一个0到59之间的整数。</p>
<p>你不单可以用函数TIME作为这些函数的参数，你还可以提供一个时间常数或时间字符串作为参数。下面的两个例子都从时间中抽取分钟数34：</p>
<p>The minute is:&lt;%=MINUTE(#12:34:19#%&gt;</p>
<p>The minute is:34</p>
<p>The minute is:&lt;%=MINUTE(“12:34:23”)%&gt;</p>
<p>The minute is:34</p>
<p>比较日期和时间</p>
<p>VBScript有两个用于比较日期和时间的函数。你可以用函数DATEADD()对日期和时间作加法，用函数DATEDIFF()计算两个日期或时间的间隔。下面是使用函数DATEADD()的一些例子：</p>
<p>Your registration will exprie on &lt;%=DATEADD(“ww”,6,DATE)%&gt;</p>
<p>Exactly fifteen seconds from now,at&lt;%=DATEADD(“s”,15,TIME)%&gt;your computer</p>
<p>will melt.</p>
<p>第一个例子返回比当前日期晚六个星期的日期，第二个例子返回15秒钟后的时间中的秒数。</p>
<p>函数DATEADD（）有三个参数：</p>
<p>第一个参数指定一个时间间隔</p>
<p>第二个参数时间间隔的倍数因子。</p>
<p>最后，第三个参数是一个日期或时间的变量或常量。</p>
<p>表8.2 日期和时间间隔</p>
<p>间隔 描述</p>
<p>yyyy 年</p>
<p>q 季度</p>
<p>m 月</p>
<p>y 天</p>
<p>d 天</p>
<p>w 天</p>
<p>ww 星期</p>
<p>h 小时</p>
<p>m 分钟</p>
<p>s 秒</p>
<p>你可以用函数DATEDIFF确定两个日期或时间之间的间隔。下面的例子演示了如何使用这个函数：</p>
<p>You have been a member for &lt;%=DATEDIFF(“d”,”1/1/1988”,DATE)%&gt; days.</p>
<p>There are exactly &lt;%=DATEDIFF(“s”,DATE,”1/1/2000”)%&gt; seconds remaining until</p>
<p>the year 2000.</p>
<p>第一个例子中的DATEDIFF()函数返回1/1/1988与当前日期之间的天数。第二个例子中的DATEDIFF()返回当前日期到2000年之间的秒数。</p>
<p>函数DATEDIFF()有三个参数：</p>
<p>第一个参数是一个日期或时间间隔</p>
<p>另两个参数是两个日期。为了避免出现负数，第一个日期参数应该比第二个早。（如果该函数返回一个负数，你应该知道第一个日期比第二个日期晚。）</p>
<p>格式化日期和时间</p>
<p>你可以规定一个日期或时间的显示格式。在缺省情况下，当你通过函数DATE显示一个日期时，它看起来是这样的：</p>
<p>7/9/97</p>
<p>但是，你可以用函数FORMATDATETIME()显示一个基于你计算机的区域设置的日期。你可以把一个日期显示为短日期格式或长日期格式。</p>
<p>注意</p>
<p>从控制面板中选择区域设置图标，可以为你的计算机进行区域设置。你可以通过区域设置来指定日期和时间的长格式或短格式。</p>
<p>下面的例子演示了如何控制长日期格式和短日期格式的显示：</p>
<p>Short Date:&lt;%=FORMATDATETIME(DATE,vbShortDate)%&gt;</p>
<p>Long Date:&lt;%=FORMATDATETIME(DATE,vbLongDate)%&gt;</p>
<p>当根据英国（美国）区域设置显示日期时，日期显示为如下的格式：</p>
<p>Short Date:7/9/97</p>
<p>Long Date:Wednesday,July 09,1997</p>
<p>注意短日期格式的显示与不做任何格式化时完全相同。在缺省情况下，日期以短日期格式显示。</p>
<p>你也可以用函数FORMATDATETIME()格式化一个时间。同样，你可以指定一个时间显示为长格式或短格式。当用短格式显示时间时，将使用24小时时钟（军事时间）。下面的例子演示了如何用FORMATDATETIME()函数操作时间：</p>
<p>Short Time:&lt;%=FORMATDATETIME(TIME,vbShortTime)%&gt;</p>
<p>Long Time:&lt;%=FORMATDATETIME(TIME,vbLongTime)%&gt;</p>
<p>当以英国（美国）区域设置显示时间时，时间的格式如下：</p>
<p>Short Time:03:20</p>
<p>Long Time:3:20:08 AM</p>
]]></content:encoded>
			<wfw:commentRss>http://ai-2.cn/2010/01/asp-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>URL编码表一览</title>
		<link>http://ai-2.cn/2010/01/url_encode/</link>
		<comments>http://ai-2.cn/2010/01/url_encode/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 02:29:32 +0000</pubDate>
		<dc:creator>csecong</dc:creator>
				<category><![CDATA[网站后台]]></category>
		<category><![CDATA[URL编码]]></category>
		<category><![CDATA[URL编码表]]></category>
		<category><![CDATA[URL解码]]></category>

		<guid isPermaLink="false">http://ai-2.cn/?p=198</guid>
		<description><![CDATA[URL编码对应表]]></description>
			<content:encoded><![CDATA[<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td width="8%" align="middle" valign="top">æ</p>
<p>退格<br />
TAB<br />
换行</p>
<p>回车</p>
<p>空格<br />
!<br />
&#8221;<br />
#<br />
$<br />
%<br />
&amp;<br />
&#8216;<br />
(<br />
)<br />
*<br />
+<br />
,<br />
-<br />
.<br />
/</td>
<td width="8%" align="middle" valign="top">%00<br />
%01<br />
%02<br />
%03<br />
%04<br />
%05<br />
%06<br />
%07<br />
%08<br />
%09<br />
%0a<br />
%0b<br />
%0c<br />
%0d<br />
%0e<br />
%0f<br />
%10<br />
%11<br />
%12<br />
%13<br />
%14<br />
%15<br />
%16<br />
%17<br />
%18<br />
%19<br />
%1a<br />
%1b<br />
%1c<br />
%1d<br />
%1e<br />
%1f<br />
%20<br />
%21<br />
%22<br />
%23<br />
%24<br />
%25<br />
%26<br />
%27<br />
%28<br />
%29<br />
%2a<br />
%2b<br />
%2c<br />
%2d<br />
%2e<br />
%2f</td>
<p><!-- row for 30-5f (=48-95) --></p>
<td width="8%" align="middle" valign="top">0<br />
1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
:<br />
;<br />
&lt;<br />
=<br />
&gt;<br />
?<br />
@<br />
A<br />
B<br />
C<br />
D<br />
E<br />
F<br />
G<br />
H<br />
I<br />
J<br />
K<br />
L<br />
M<br />
N<br />
O<br />
P<br />
Q<br />
R<br />
S<br />
T<br />
U<br />
V<br />
W<br />
X<br />
Y<br />
Z<br />
[<br />
\<br />
]<br />
^<br />
_</td>
<td width="8%" align="middle" valign="top">%30<br />
%31<br />
%32<br />
%33<br />
%34<br />
%35<br />
%36<br />
%37<br />
%38<br />
%39<br />
%3a<br />
%3b<br />
%3c<br />
%3d<br />
%3e<br />
%3f<br />
%40<br />
%41<br />
%42<br />
%43<br />
%44<br />
%45<br />
%46<br />
%47<br />
%48<br />
%49<br />
%4a<br />
%4b<br />
%4c<br />
%4d<br />
%4e<br />
%4f<br />
%50<br />
%51<br />
%52<br />
%53<br />
%54<br />
%55<br />
%56<br />
%57<br />
%58<br />
%59<br />
%5a<br />
%5b<br />
%5c<br />
%5d<br />
%5e<br />
%5f</td>
<p><!-- row for 60-8f (=96-143) --></p>
<td width="8%" align="middle" valign="top">`<br />
a<br />
b<br />
c<br />
d<br />
e<br />
f<br />
g<br />
h<br />
i<br />
j<br />
k<br />
l<br />
m<br />
n<br />
o<br />
p<br />
q<br />
r<br />
s<br />
t<br />
u<br />
v<br />
w<br />
x<br />
y<br />
z<br />
{<br />
|<br />
}<br />
~</p>
<p>€</p>
<p>‚<br />
ƒ<br />
„<br />
乧<br />
侕<br />
侖<br />
ˆ<br />
侎<br />
Š<br />
‹<br />
Œ</p>
<p>丒br&gt;</td>
<td width="8%" align="middle" valign="top">%60<br />
%61<br />
%62<br />
%63<br />
%64<br />
%65<br />
%66<br />
%67<br />
%68<br />
%69<br />
%6a<br />
%6b<br />
%6c<br />
%6d<br />
%6e<br />
%6f<br />
%70<br />
%71<br />
%72<br />
%73<br />
%74<br />
%75<br />
%76<br />
%77<br />
%78<br />
%79<br />
%7a<br />
%7b<br />
%7c<br />
%7d<br />
%7e<br />
%7f<br />
%80<br />
%81<br />
%82<br />
%83<br />
%84<br />
%85<br />
%86<br />
%87<br />
%88<br />
%89<br />
%8a<br />
%8b<br />
%8c<br />
%8d<br />
%8e<br />
%8f</td>
<p><!-- row for 90-bf (=144-191) --></p>
<td width="8%" align="middle" valign="top">
乪<br />
乫<br />
乬<br />
乭<br />
•<br />
–<br />
—<br />
˜<br />
™<br />
š<br />
›<br />
œ</p>
<p>丒br&gt;Ÿ</p>
<p>¡<br />
¢<br />
£</p>
<p>\<br />
|<br />
仒<br />
丯<br />
©<br />
ª<br />
«<br />
¬<br />
¯<br />
®<br />
¯<br />
亱<br />
亇<br />
²<br />
³<br />
丩<br />
µ<br />
侘<br />
·<br />
¸<br />
¹<br />
º<br />
»<br />
¼<br />
½<br />
¾<br />
¿</td>
<td width="8%" align="middle" valign="top">%90<br />
%91<br />
%92<br />
%93<br />
%94<br />
%95<br />
%96<br />
%97<br />
%98<br />
%99<br />
%9a<br />
%9b<br />
%9c<br />
%9d<br />
%9e<br />
%9f<br />
%a0<br />
%a1<br />
%a2<br />
%a3<br />
%a4<br />
%a5<br />
%a6<br />
%a7<br />
%a8<br />
%a9<br />
%aa<br />
%ab<br />
%ac<br />
%ad<br />
%ae<br />
%af<br />
%b0<br />
%b1<br />
%b2<br />
%b3<br />
%b4<br />
%b5<br />
%b6<br />
%b7<br />
%b8<br />
%b9<br />
%ba<br />
%bb<br />
%bc<br />
%bd<br />
%be<br />
%bf</td>
<td width="8%" align="middle" valign="top">À<br />
Á<br />
Â<br />
Ã<br />
Ä<br />
Å<br />
Æ<br />
Ç<br />
È<br />
É<br />
Ê<br />
Ë<br />
Ì<br />
Í<br />
Î<br />
Ï<br />
Ð<br />
Ñ<br />
Ò<br />
Ó<br />
Ô<br />
Õ<br />
Ö</p>
<p>Ø<br />
Ù<br />
Ú<br />
Û<br />
Ü<br />
Ý<br />
Þ<br />
ß<br />
à<br />
á<br />
â<br />
ã<br />
ä<br />
å<br />
æ<br />
ç<br />
è<br />
é<br />
ê<br />
ë<br />
ì<br />
í<br />
î<br />
ï</td>
<td width="8%" align="middle" valign="top">%c0<br />
%c1<br />
%c2<br />
%c3<br />
%c4<br />
%c5<br />
%c6<br />
%c7<br />
%c8<br />
%c9<br />
%ca<br />
%cb<br />
%cc<br />
%cd<br />
%ce<br />
%cf<br />
%d0<br />
%d1<br />
%d2<br />
%d3<br />
%d4<br />
%d5<br />
%d6<br />
%d7<br />
%d8<br />
%d9<br />
%da<br />
%db<br />
%dc<br />
%dd<br />
%de<br />
%df<br />
%e0<br />
%e1<br />
%e2<br />
%e3<br />
%e4<br />
%e5<br />
%e6<br />
%e7<br />
%e8<br />
%e9<br />
%ea<br />
%eb<br />
%ec<br />
%ed<br />
%ee<br />
%ef</td>
<td width="8%" align="middle" valign="top">ð<br />
ñ<br />
ò<br />
ó<br />
ô<br />
õ<br />
ö<br />
亐<br />
ø<br />
ù<br />
ú<br />
û<br />
ü<br />
ý<br />
þ<br />
ÿ</td>
<td width="8%" align="middle" valign="top">%f0<br />
%f1<br />
%f2<br />
%f3<br />
%f4<br />
%f5<br />
%f6<br />
%f7<br />
%f8<br />
%f9<br />
%fa<br />
%fb<br />
%fc<br />
%fd<br />
%fe<br />
%ff</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://ai-2.cn/2010/01/url_encode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>去掉图片链接点击后，图片周围的虚线框</title>
		<link>http://ai-2.cn/2010/01/link-xuxian/</link>
		<comments>http://ai-2.cn/2010/01/link-xuxian/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 01:56:06 +0000</pubDate>
		<dc:creator>csecong</dc:creator>
				<category><![CDATA[div+css]]></category>
		<category><![CDATA[图片按钮边框]]></category>
		<category><![CDATA[图片链接]]></category>
		<category><![CDATA[虚线框]]></category>

		<guid isPermaLink="false">http://ai-2.cn/?p=194</guid>
		<description><![CDATA[a {outline: none;}
a:active {star:expression(this.onFocus=this.blur());}
:focus { outline:0; }
或< a href="#" onFocus="this.blur()">< img src="logo.jpg" border=0>< /a>]]></description>
			<content:encoded><![CDATA[<p>以前一直用的方法都是：</p>
<p>a {outline: none;star:expression(this.onFocus=this.blur());}</p>
<p>后来发现有瑕疵，不完美。体现在页面调用JS动作比较频繁的情况下，页面很卡~~~半个月内遇到两次这个问题，都是自己公司的平台。而网上却没有关于这个的说法·~~而大家也都是按部就班，我不得不写一写。</p>
<p>解决办法就是写成这样：</p>
<p>a:active {outline: none;star:expression(this.onFocus=this.blur());}</p>
<p>有的人怀疑，未什么不直接写在a里呢，为什么不这样写呢a {outline: none;star:expression(this.onFocus=this.blur());}， 这样不是可以包含了所有的A了吗？其实这样理论上是对的，原来我也这么用，原来也发现没什么问题，可最近在做另一个项目的时候，页面调用的JS比较多，问 题就来了~整个页面会很卡，起初找不到原因，一直抓狂~~~后来一个个排除原因，最终找到罪魁祸首竟然是CSS样式表·~~</p>
<p>因为如果写在A里，那么不管是鼠标放上，鼠标点击，还是默认，都会执行star:expression(this.onFocus=this.blur());， 这个代码相对于IE来说就是一个CSS的动作调用，和JS原理一样，页面资源耗不起啊，也算是IE的BUG吧~~~我们实现的效果是要点击的时候没有虚 线，所以就写在a:active里就可以了，意思就是点击时才执行，才去掉虚线框。这样鼠标在放上A和默认的情况下就不会卡。</p>
<p>要同时兼容IE和火狐浏览器，样式直接写成以下就可以：</p>
<p>a {outline: none;}<br />
a:active {star:expression(this.onFocus=this.blur());}<br />
也可以单独写：</p>
<p>===IE===<br />
为链接添加onFocus事件<br />
if(this.blur)this.blur()</p>
<p>===Firefox===<br />
添加CSS<br />
:focus{outline:0}<br />
该CSS可以作为全局存在，即在样式表中单独存在一行该代码即可时全页面的链接不带有虚线框</p>
<p>===Chrome, Safari===<br />
这两个浏览器在点击链接时本身没有虚线框</p>
<p>===Jquery框架===<br />
如果你使用Jquery框架的话，可以添加以下代码即可实现(raycross 提供)<br />
$(&#8220;a&#8221;).bind(&#8220;focus&#8221;,function() {<br />
if(this.blur) {this.blur()};<br />
});</p>
<p>最终我的用法是在CSS文件直接加入：</p>
<p>a {outline: none;}<br />
a:active {star:expression(this.onFocus=this.blur());}<br />
:focus { outline:0; }</p>
<p>转自：<a href="http://qiuyili68.blog.163.com/blog/static/6753180320097273565980/" target="_blank">lily的日志</a></p>
<p>嘿嘿～</p>
<p>如果页面上只有一两个链接的话，直接加到&lt;a&gt;里面也行，就像这样</p>
<p>&lt;a href=&#8221;#&#8221; onFocus=&#8221;this.blur()&#8221;&gt;&lt;img src=&#8221;logo.jpg&#8221; border=0&gt;&lt;/a&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://ai-2.cn/2010/01/link-xuxian/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery 1.3 API 参考文档中文版-在线版</title>
		<link>http://ai-2.cn/2010/01/jqueryapi/</link>
		<comments>http://ai-2.cn/2010/01/jqueryapi/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 02:41:37 +0000</pubDate>
		<dc:creator>csecong</dc:creator>
				<category><![CDATA[div+css]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[胡言乱语]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[中文版]]></category>

		<guid isPermaLink="false">http://ai-2.cn/?p=192</guid>
		<description><![CDATA[http://ai-2.cn/tools/jqueryapi/]]></description>
			<content:encoded><![CDATA[<p>jQuery 1.3 API 参考文档中文版</p>
<p><a title="jQuery 1.3 API 参考文档中文版" href="http://ai-2.cn/tools/jqueryapi/" target="_blank">http://ai-2.cn/tools/jqueryapi/</a></p>
<p>来源：http://code.google.com/p/jquery-api-zh-cn/downloads/list</p>
]]></content:encoded>
			<wfw:commentRss>http://ai-2.cn/2010/01/jqueryapi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>js的一些小技巧（一）</title>
		<link>http://ai-2.cn/2010/01/jsff1/</link>
		<comments>http://ai-2.cn/2010/01/jsff1/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 02:25:05 +0000</pubDate>
		<dc:creator>csecong</dc:creator>
				<category><![CDATA[js]]></category>
		<category><![CDATA[js代码]]></category>
		<category><![CDATA[小技巧]]></category>

		<guid isPermaLink="false">http://ai-2.cn/?p=189</guid>
		<description><![CDATA[javascript 一条语句实现随机数]]></description>
			<content:encoded><![CDATA[<p><strong>javascript 一条语句实现随机数</strong></p>
<p><span>alert(Math.round(Math.random()*10000)) </span></p>
<p><span>我一般用它来防止载入页面有缓存，比如</span>$(&#8216;#yzm&#8217;).attr(&#8220;src&#8221;,&#8221;yzm.asp?time=&#8221;+Math.round(Math.random()*10000));</p>
]]></content:encoded>
			<wfw:commentRss>http://ai-2.cn/2010/01/jsff1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
