SQL 将URL编码转汉字
来源:互联网 发布:天府软件园 知乎 编辑:程序博客网 时间:2024/06/06 12:35
转码前:%E5%B9%BF%E4%B8%9C%E7%9C%81%E7%8F%A0%E6%B5%B7%E5%B8%82%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8
转码后:广东省珠海市信息工程有限公司
select dbo.FN_URLDecode('%E5%B9%BF%E4%B8%9C%E7%9C%81%E7%8F%A0%E6%B5%B7%E5%B8%82%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8')
CREATE FUNCTION FN_URLDecode ( @Str VARCHAR(8000)--已经编码的字符串 ) RETURNS VARCHAR(8000) AS BEGIN DECLARE @Position INT; --'%'字符所在位置 DECLARE @Chr CHAR(16); --字符常量 DECLARE @Pattern CHAR(21); DECLARE @ParseStr VARCHAR(8000);--解码后的字符串 DECLARE @Hex UNIQUEIDENTIFIER;--定义16进制模板,因为GUID方便转为BYTE DECLARE @CurrWord INT ;--当前字 DECLARE @BitsCount INT ;--当前解码位数 DECLARE @HightByte TINYINT;--高位字节 DECLARE @LowByte TINYINT;--低位字节 /****************变量初始化***********************/ 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码直接转为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进制编码则中断外层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
转自:http://blog.csdn.net/ruijc/article/details/6931189
select dbo.FN_URLDecode('%E5%B9%BF%E4%B8%9C%E7%9C%81%E7%8F%A0%E6%B5%B7%E5%B8%82%E4%BF%A1%E6%81%AF%E5%B7%A5%E7%A8%8B%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8')
阅读全文
0 0
- SQL 将URL编码转汉字!
- SQL 将URL编码转汉字
- Java将汉字转换成URL编码
- url编码转汉字 json编码转换
- URL 汉字转换编码
- URL 汉字转换编码1
- 中文汉字到URL编码的转换
- Flex 转化汉字为各种URL编码
- URL中汉字和utf编码转换
- URL中带汉字的编码处理
- URL地址中汉字的编码转换
- 怎么把汉字转换成URL编码
- URL汉字转码
- 将unicode编码转化为汉字输出
- 将汉字转为UTF-8编码
- 将汉字转化为unicode编码
- java将Unicode编码转换为汉字
- java将Unicode编码转换为汉字
- 详细讨论HashMap
- C语言学习之指针的右左法则
- Nginx负载均衡
- 如何看懂总结
- https原理:证书传递、验证和数据加密、解密过程解析
- SQL 将URL编码转汉字
- 实现java多线程的3种方式,99%人没用过第3种
- 日期相关的工具类
- dust学习地址
- android军火库:闪屏页面SplashActivity
- Caffe2:移动计算的深度学习框架
- 萌新程序媛笔记-1-HELLOWORLD
- 调用百度地图API报错
- Vue.js2入门