`
kolenxiao
  • 浏览: 36292 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

支持utf8的mysql urldecode funtion

 
阅读更多

 不要吐槽我为什么用sql语句来做urldecode。。。 
但是当你遇到这种情况而且搜到的sql都只支持英文时,这篇文章就有用了 

参考文章: 
http://psoug.org/snippet/url_decode_that_respects_utf8_characters_502.htm 
http://www.w3schools.com/tags/ref_urlencode.asp 

原方法在替换'%0A'时转换失败,加多一句处理,其他特殊符号均可参照表格用同样方法提前替换。 

------------------------------------

Sql代码:

DELIMITER $$
DROP FUNCTION
IF EXISTS `url_decode`$$

CREATE DEFINER = `root`@`%` FUNCTION `url_decode` (original_text TEXT) RETURNS TEXT CHARSET utf8
BEGIN
	DECLARE
		new_text TEXT DEFAULT NULL ; DECLARE
			pointer INT DEFAULT 1 ; DECLARE
				end_pointer INT DEFAULT 1 ; DECLARE
					encoded_text TEXT DEFAULT NULL ; DECLARE
						result_text TEXT DEFAULT NULL ;
					SET new_text = REPLACE (original_text, '+', ' ') ;
					SET new_text = REPLACE (new_text, '%0A', '\r\n') ;
					SET pointer = LOCATE("%", new_text) ;
					WHILE pointer <> 0 && pointer < (CHAR_LENGTH(new_text) - 2) DO

					SET end_pointer = pointer + 3 ;
					WHILE MID(new_text, end_pointer, 1) = "%" DO

					SET end_pointer = end_pointer + 3 ;
					END
					WHILE ;
					SET encoded_text = MID(
						new_text,
						pointer,
						end_pointer - pointer
					) ;
					SET result_text = CONVERT (
						UNHEX(
							REPLACE (encoded_text, "%", "")
						) USING utf8
					) ;
					SET new_text = REPLACE (
						new_text,
						encoded_text,
						result_text
					) ;
					SET pointer = LOCATE(
						"%",
						new_text,
						pointer + CHAR_LENGTH(result_text)
					) ;
					END
					WHILE ; RETURN new_text ;
					END$$

DELIMITER ;

 

分享到:
评论

相关推荐

    Mysql支持emoji 表情符号 升级编码为UTF8MB4

    Mysql支持emoji表情符号升级编码为UTF8MB4 在使用Mysql数据库时,如果需要支持emoji表情符号,需要对数据库的编码进行升级,以便正确地存储和显示emoji表情符号。下面是升级Mysql编码为UTF8MB4的步骤和注意事项: ...

    用JavaScript实现PHP的urldecode/urldecode函数

    这个是 utf-8版本的 js实现 php的 urlencode() 和 urldecode()两个函数的功能。 在传送cookie的时候 在 php端实现 url编码 但要用 js来解码cookie的时候 就出现汉字不能不能识别的问题 这个 js 很好的解决

    urlencode urldecode实现

    `urlencode` 和 `urldecode` 就是用于此目的的两个关键函数。本篇文章将深入探讨这两个概念及其在Xcode中使用C++混编的实现。 `urlencode` 是一种编码方法,其目的是将非ASCII字符或者在URL中具有特殊含义的字符...

    js实现urlncode 和urldecode

    js实现urlncode 和urldecode

    java net unicode / native2ascii / url decode / url encode / UTF8 / js url code

    标题中的“java net unicode / native2ascii / url decode / url encode / UTF8 / js url code”涉及了Java网络编程中的几个关键概念,这些概念在处理字符编码时非常重要。以下是对这些概念的详细解释: 1. **...

    大文件UrlDecode工具

    UrlDecode是我们天天要用的东西了,小的字符串,我们直接拷到在线网站上处理掉,大量数据呢?这个工具可以高效离线处理,亲测200GB日志,完全满足您的需求。

    urlEncode or urlDecode

    在IT行业中,`urlEncode` 和 `urlDecode` 是两个非常关键的概念,它们主要用于处理URL(统一资源定位符)中的特殊字符。理解这两个概念对于网页开发、数据传输以及网络编程至关重要。 `urlEncode` 是一个过程,它将...

    EncodeDecode & ANSI-UTF8编码转换工具

    其次,不是所有的程序都支持带BOM的UTF-8文件,因此在转换时可能需要选择是否添加BOM。最后,对于二进制文件,如图片或音频文件,编码转换通常是无效的,因为它们不包含文本信息,而是由字节流组成。 总之,"Encode...

    utf8.zip_UTF8_VB6 UTF-8_cutf8.cls_utf8解码在线_vb6

    “UTF-8 Encode Decode my”可能是另一个VB6文件,可能是一个示例程序或者测试用例,用于演示如何使用上述的编码解码功能。它可能包含输入字符串,进行编码和解码,然后显示结果的代码。 “readme.txt”通常是提供...

    urldecode脚本python实现

    使用python2.6.6,windows下直接拖拽文件到图标上即可。 输出文件为UTF-8文件,文件名为原文件名.dec。 代码中把注释去掉则输出变为GB2312,可以自行修改。

    utf8.rar_UTF8_UTF8-gb_big5_delphi_utf8 decode_字符串 转换

    标题中的"utf8.rar_UTF8_UTF8-gb_big5_delphi_utf8 decode_字符串转换"表明这个压缩包可能包含与字符编码转换相关的代码或资源,特别是涉及到UTF8、GBK(GB2312,通常简称为gb)、BIG5以及Delphi编程语言的字符串...

    js实现GBK编码,避免默认utf-8编码

    前端页面通过ajax发送请求,参数都是默认使用utf-8编码格式对参数进行url编码,这样的后果就是,当后台页面如果使用gbk编码的话,会出现乱码的情况,然后网上找到一个大神写的gbk.js. 但是里面没有做出详细介绍,这里...

    PB 进制转换 url编码 urlencode urldecode 数组排序

    自己写的,可能有bug,请大家一块学习 环境为PB12 函数(及参数) 作用 arraysort 对一维数组进行排序 ...urldecode 将指定字符串以进行指定字符集url解码 urlencode 将指定字符串以进行指定字符集url编码 涨价了,哈哈

    用ASP应用程序实现自己的UrlDeCode

    这个更高级的`URLDecode`函数包含了处理UTF-8编码的逻辑,能够正确解析不同长度的多字节字符。它检查字符是否属于UTF-8编码的范围,并根据需要组合多个字节以形成正确的Unicode字符。 通过这两个示例,我们可以看到...

    utf8-decode:以 UTF8 解码 JavaScript 字符串

    `utf8-decode`是一个JavaScript库,专门用于将UTF8编码的字节序列转换回可读的字符串。 **安装与使用** 要使用`utf8-decode`库,首先你需要通过npm(Node Package Manager)或者Component来安装。在命令行中输入...

    utf8与string的相互转换

    在Java中,String类也是用于存储和操作字符序列,同样支持UTF-8编码。 实现UTF-8与字符串之间的转换通常需要特定的函数或方法。在Python中,你可以使用内置的`encode`和`decode`函数进行转换: ```python # 字符串...

    CAST-128_Python_v2_CAST-128inPython_V2_UTF8unicode_

    在Python中支持UTF-8编码意味着这个实现可以处理包含非ASCII字符的字符串。UTF-8是一种广泛使用的Unicode编码方案,能够表示所有Unicode字符,使得国际化的文本加密成为可能。在加密和解密过程中,数据首先会被转换...

    易语言URL编解码

    1. 字符编码:URL编解码通常基于ASCII编码,但现代的URL标准(如RFC3986)推荐使用UTF-8编码。在易语言中,你需要选择合适的字符编码方式来处理非ASCII字符。 2. 转义字符:易语言需要识别哪些字符需要转义,并用...

    用JavaScript实现PHP的urlencode与urldecode函数

    `utf16to8` 和 `utf8to16` 是辅助函数,用于在 UTF-8 和 UTF-16 之间进行转换,因为 JavaScript 默认使用 UTF-16 编码,而 PHP 的 `urlencode` 和 `urldecode` 通常处理 UTF-8 编码的字符串。 使用这两个函数时,你...

    utf-8 ansi 字符互转 工具

    ansi_text = utf8_text.decode('gbk') # 注意,Windows-1252 在处理中文时通常用GBK或GB2312代替 ``` 2. **使用工具**:针对非程序员或者需要批量转换的场景,有许多第三方工具可以使用。例如“utf-8 ansi 字符互...

Global site tag (gtag.js) - Google Analytics