1.前言。
如题,编解码格式都为gbk。编码可以不用函数。直接用for xml 。如:
SELECT (SELECT CONVERT(varbinary(max), '分为服务') FOR XML PATH(''), TYPE).value('/', 'nvarchar(max)')
2.解码。
CREATE FUNCTION dbo.base64_decode
(
@encoded_text varchar(max)
)
RETURNS varbinary(max)
AS
BEGIN
DECLARE
@output varbinary(max),
@block_start int,
@encoded_length int,
@decoded_length int,
@mapr binary(122)
IF LEN(@encoded_text) & 3 > 0
OR @encoded_text LIKE '%[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=]%' COLLATE Latin1_General_Bin
RETURN NULL
SET @output = 0x
-- The nth byte of @mapr contains the base64 value of the character with an ASCII value of n.
-- eg. 65th byte = 0x00 = 0 = value of 'A'
SET @mapr =
0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -- 1-33
+ 0xFFFFFFFFFFFFFFFFFFFF3EFFFFFF3F3435363738393A3B3C3DFFFFFF00FFFFFF -- 33-64
+ 0x000102030405060708090A0B0C0D0E0F10111213141516171819FFFFFFFFFFFF -- 65-96
+ 0x1A1B1C1D1E1F202122232425262728292A2B2C2D2E2F30313233 -- 97-122
--get the number of blocks to be decoded
SET @encoded_length = LEN(@encoded_text)
SET @decoded_length = @encoded_length / 4 * 3
--for each block
SET @block_start = 1
WHILE @block_start < @encoded_length
BEGIN
--decode the block and add to output
--BINARY values between 1 and 4 bytes can be implicitly cast to INT
SET @output = @output +
CAST(CAST(
SUBSTRING(@mapr, ASCII(SUBSTRING(@encoded_text, @block_start , 1)), 1) * 262144
+ SUBSTRING(@mapr, ASCII(SUBSTRING(@encoded_text, @block_start + 1, 1)), 1) * 4096
+ SUBSTRING(@mapr, ASCII(SUBSTRING(@encoded_text, @block_start + 2, 1)), 1) * 64
+ SUBSTRING(@mapr, ASCII(SUBSTRING(@encoded_text, @block_start + 3, 1)), 1)
AS int) AS binary(3))
SET @block_start = @block_start + 4
END
IF RIGHT(@encoded_text, 2) = '=='
SET @decoded_length = @decoded_length - 2
ELSE IF RIGHT(@encoded_text, 1) = '='
SET @decoded_length = @decoded_length - 1
RETURN SUBSTRING(@output, 1, @decoded_length)
END
测试:select convert(varchar(2000),dbo.base64_decode('t9bOqrf+zvE=') )
测试结果为:分为服务
3.注意事项。
(1)编解码用utf-8毫无意义,以上都是针对gbk,utf-8的可以在网上找下,utf-8的和gbk的编解码方式不同。
分享到:
相关推荐
在SQL Server 2005中,Base64编码是一种常用的数据编码方式,它将二进制数据转化为可打印的ASCII字符,常用于在网络上传输或存储非ASCII字符的数据。Base64编码能够确保数据在传输过程中不被篡改,因为它是通过特定...
综上所述,SQL Server支持Base64编码和解码,对于包含中文、数字和字母的数据同样适用。通过理解Base64的工作原理和SQL Server的相关函数,我们可以灵活地在数据库中处理加密和解密操作,满足数据安全的需求。在实际...
在SQL Server 2005中,我们可以使用`VARBINARY`和`VARCHAR`数据类型结合内置函数来实现Base64编码与解码: 1. **Base64编码**: ```sql CREATE FUNCTION dbo.Base64Encode(@input VARCHAR(MAX)) RETURNS VARCHAR...
中文字符在计算机中通常以多字节形式存储,因此在进行Base64编码时,需要特殊处理以确保中文字符能够正确无误地被编码和解码。"完美支持中文"意味着该Base64工具不仅能够处理ASCII字符,还能够正确处理UTF-8编码的...
Base64编解码 支持中文base64编码,支持二维码编码 支持语言:English (United States),中文 (简体)
2. **解码Base64**:将Base64字符串解码回二进制数据,这可以通过创建一个新的Blob对象完成。 3. **压缩图像**:使用像`compress-to-jpeg`或`compress-file`这样的JavaScript库,对Blob对象进行压缩。这些库通常会...
6. **VB和C#中的Base64操作**:在VB中,可以使用`Convert.ToBase64String`和`Convert.FromBase64String`方法进行Base64编码和解码;而在C#中,对应的函数是`Convert.ToBase64String`和`Convert.FromBase64String`。...
例如,可以使用`Base64.getEncoder().encodeToString()`方法对二进制数据进行编码,`Base64.getDecoder().decode()`方法进行解码。 MD5的计算则可以通过java.security.MessageDigest类来完成。首先需要创建一个MD5...
Cain4.9中文版,绝对是中文版是一个可以破解屏保、PWL密码、共享密码、缓存口令、远程共享口令、SMB口令、支持VNC口令解码、Cisco Type-7口令解码、Base64口令解码、SQL Server 7.0/2000口令解码、Remote Desktop...
在Web Service的开发中,数据交换通常是通过SOAP(Simple Object Access Protocol)进行的,而图片数据的处理则涉及到二进制数据的编码和解码,例如Base64编码。这可能包括创建一个服务来接收图片数据,将其存储到...
在C++中,可以使用开源库如`openssl`或自定义函数实现Base64编码和解码。Base64算法将每3个字节的数据转换为4个Base64字符,不足3字节的数据会用填充位'='表示,并根据规则进行编码。 3. **随机数算法**:在C++中,...
这是一个可以破解屏保、PWL密码、共享密码、缓存口令、远程共享口令、SMB口令、支持VNC口令解码、Cisco Type-7口令解码、Base64口令解码、SQL Server 7.0/2000口令解码、Remote Desktop口令解码、Access Database...
这是一个可以破解屏保、PWL密码、共享密码、缓存口令、远程共享口令、SMB口令、支持VNC口令解码、 Cisco Type-7口令解码、Base64口令解码、SQL Server 7.0/2000口令解码、Remote Desktop口令解码、Access Database...
这是一个可以破解屏保、PWL密码、共享密码、缓存口令、远程共享口令、SMB口令、支持VNC口令解码、Cisco Type-7口令解码、Base64口令解码、SQL Server 7.0/2000口令解码、Remote Desktop口令解码、Access Database...
屏保、PWL密码、共享密码、缓存口令、远程共享口令、SMB口令、支持VNC口令解码、Cisco Type-7口令解码、Base64口令解码、SQL Server 7.0/2000口令解码、Remote Desktop口令解码、Access Database口令解码、Cisco PIX...
1、base64解码.txt 2、行转列.txt 3、列转行.txt 4、BULK INSERT.txt 5、双色球.txt 6、删除完全重复数据.txt 7、快速备份.txt 8、计算table的空间使用量.txt 9、分割sql.txt 10、导出Html.txt 11、top m n.txt 12、...
在示例代码中,`Content`字段的值被编码为Base64字符串,所以我们需要解码它。 ```java String fileName = rs.getString("FileName"); // 假设还有文件名字段 String contentBase64 = rs.getString("Content"); ...
// 将Base64解码并保存为文件 var imageData = Convert.FromBase64String(model.ImageBase64); var savePath = Path.Combine(Server.MapPath("~/uploads"), model.ImageName); File.WriteAllBytes(savePath, ...
6. **sun.misc.BASE64Decoder.jar**: 这个JAR文件包含了Sun Microsystems提供的一个基础库,其中的BASE64Decoder类用于解码Base64编码的数据。Base64是一种常见的数据编码方式,常用于在网络上传输二进制数据。虽然...
1. **编码转换**:可以将ASP代码从一种编码方式转换为另一种,例如从Base64编码转换为明文或者从URL编码转换为正常文本。 2. **混淆解密**:对于一些经过混淆处理的ASP代码,AspDecoder可能有特定的算法来尝试解析...