亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

SQL 將URL編碼轉(zhuǎn)漢字!

系統(tǒng) 2001 0
原文: SQL 將URL編碼轉(zhuǎn)漢字!

    -- =============================================

-- 作    者: ruijc

-- 描    述: 將Url編碼轉(zhuǎn)明文字符串

-- =============================================

CREATE FUNCTION FN_URLDecode

(

 @Str VARCHAR(8000)--已經(jīng)編碼的字符串

)

RETURNS VARCHAR(8000)

AS

BEGIN

  DECLARE @Position  INT;          --'%'字符所在位置

  DECLARE @Chr       CHAR(16);     --字符常量

  DECLARE @Pattern   CHAR(21);

  DECLARE @ParseStr  VARCHAR(8000);--解碼后的字符串

  DECLARE @Hex		 UNIQUEIDENTIFIER;--定義16進(jìn)制模板,因為GUID方便轉(zhuǎn)為BYTE

  DECLARE @CurrWord	 INT		;--當(dāng)前字

  DECLARE @BitsCount INT        ;--當(dāng)前解碼位數(shù)

  DECLARE @HightByte TINYINT;--高位字節(jié)

  DECLARE @LowByte   TINYINT;--低位字節(jié)

  

  /****************變量初始化***********************/

  SET     @Chr = '0123456789abcdef';

  SET     @Pattern = '%[%][a-f0-9][a-f0-9]%';

  SET     @ParseStr=@Str;

  SET     @Hex= '00000000-0000-0000-0000-000000000000';

  SET     @CurrWord=0;

  SET     @BitsCount=0;

  SET     @HightByte=0;

  SET     @LowByte=0;

  

  IF (@Str IS NOT NULL OR @Str<>'')

   BEGIN

     SET    @Position = PATINDEX(@Pattern, @ParseStr);--取得第一個'%'所在的位置

     WHILE @Position>0

      BEGIN

        SET @Hex=STUFF(@Hex,7,2,LEFT(RIGHT(@ParseStr,len(@ParseStr) - @Position),2));

        SET @HightByte=CAST(CAST(@Hex AS BINARY(1)) AS INT);

        

        IF (@HightByte & 127=@HightByte)

         BEGIN--ASCII碼直接轉(zhuǎn)為UTF-8或UTF-16

           SET @CurrWord=@HightByte;

           SET @BitsCount=1;

         END

         

        IF (@HightByte & 192=192)

         BEGIN--Unicode編碼

           SET @CurrWord=@HightByte & 31 ;

           SET @BitsCount=2;

         END



        IF (@HightByte & 224=224)

         BEGIN--UTF-8編碼

			SET	@CurrWord = @HightByte & 15

			SET @BitsCount = 3	

         END



        IF (@HightByte & 240=240)

         BEGIN--UTF-16編碼

			SET	@CurrWord = @HightByte & 7

			SET @BitsCount = 4	

         END



        DECLARE @Index INT;        

        DECLARE @NEWCHAR NVARCHAR(2);

        SET @Index=1;

        SET @NEWCHAR='';

        WHILE @Index<@BitsCount

         BEGIN

              IF (LEN(@ParseStr)-@Position-3*@Index)<0

               BEGIN

                   SET @ParseStr=@Str ;   

                   SET @Position=0;

                   BREAK;              

               END

			SET @NEWCHAR = LEFT(RIGHT(@ParseStr,LEN(@ParseStr) - @Position - 3* @Index),2);	  

            --如果沒有16進(jìn)制編碼則中斷外層WHILE

			IF @NEWCHAR NOT LIKE '[a-f0-9][a-f0-9]'

			 BEGIN

				SET @ParseStr = @Str

				SET @Position=0;--中斷外層WHILE

				BREAK;

			 END 	



			SET @Hex = STUFF(@Hex, 7, 2, @NEWCHAR)		



			SET @LowByte = CAST(CAST(@Hex AS BINARY(1)) AS INT);



			IF @LowByte&192=192

			BEGIN

				SET @ParseStr = @Str

				SET @Position=0;--中斷外層WHILE

				BREAK;

			END 

			

			SET @CurrWord = (@CurrWord * 64) | (@LowByte & 63)				

			SET @Index =@Index+ 1						  			             

         END                                   



		 IF @BitsCount > 1           

          SET @ParseStr = STUFF(@ParseStr, @Position, 3*(@BitsCount), NCHAR(@CurrWord))

		 ELSE 

		  BEGIN

			set @ParseStr = STUFF(@ParseStr, @Position, 2, NCHAR(@CurrWord))

			set @ParseStr = STUFF(@ParseStr, @Position+1, 1, N'')		

		  END

		----取得下一個'%'所在的位置

        SET  @Position = PATINDEX(@Pattern, @ParseStr);

      END

   END

   RETURN @ParseStr;

END



GO

SELECT dbo.FN_URLDecode('%E4%BD%A0%E6%98%AF%E5%93%AA%E4%B8%AA')


  

SQL 將URL編碼轉(zhuǎn)漢字!


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 女人18一级特级毛片免费看 | 五月花精品视频在线观看 | 国产麻豆精品手机在线观看 | 日韩欧美在线不卡 | 久久亚洲国产精品五月天 | 四虎国产精品永久在线网址 | 99热这里只有精品免费国产 | 日日操影院| 99热久久国产精品这里有99 | 欧美日韩中文在线观看 | 九九热视频在线观看 | 国产久视频 | 手机看片福利日韩欧美看片 | 日韩在线中文 | 国产一级持黄大片99久久 | 一级免费看 | 日韩免费成人 | 国产成人综合自拍 | 久久久久久一级毛片免费无遮挡 | 伊人久久波多野结衣中文字幕 | 99久久中文字幕伊人 | 91成人午夜精品福利院在线观看 | 美女个护士一级毛片亚洲 | 久久视频精品a线视频在线观看 | 欧美激情视频二区 | 免费观看美女光子让男人玩 | 四虎免费影视 | 欧洲a级毛片 | 性欧美成人依依影院 | 97视频免费公开成人福利 | 九九视频在线看精品 | 一级a俄罗斯毛片免费 | 玖玖射 | 免费黄色毛片 | swag系列国产精品 | 国产精品亚洲片在线牛牛影视 | 日本三级11k影院在线 | 欧美亚洲综合另类型色妞 | a视频在线观看 | 九月婷婷综合 | 久久大香伊蕉在人线国产昨爱 |