gpt4 book ai didi

c# - Base64 在 SQL 中编码一个 utf8 字符串

转载 作者:太空宇宙 更新时间:2023-11-03 16:20:04 24 4
gpt4 key购买 nike

我有一个 SQL 函数,用于将字符串转换为 base64 编码的字符串。唯一的问题是没有使用 UTF8,我可以看出这一点,因为我有一个单独的 C# 工具可以提供不同的输出。

SQL 函数:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER FUNCTION [dbo].[Base64Encode] ( @sInput NVARCHAR(max) )
RETURNS NVARCHAR(max)
BEGIN

DECLARE @vInput VARBINARY(max)
DECLARE @sEncodedOutput NVARCHAR(max)

set @vInput = convert(varbinary(max), @sInput)
set @sEncodedOutput = cast('' as xml).value('xs:base64Binary(sql:variable("@vInput"))', 'NVARCHAR(max)')

RETURN @sEncodedOutput

END

C#

        try
{
encodedValueTextbox.Text = Convert.ToBase64String(
Encoding.UTF8.GetBytes(valueTextbox.Text));
}
catch (Exception ex)
{
encodedValueTextbox.Text = ex.Message;
}

有没有办法让 SQL 使用 UTF8?

最佳答案

你的@sInput 是NVARCHAR,也就是UNICODE UCS-2。因此,您正在将 UCS-2 转换为二进制文件。

您可以将输入参数更改为 varbinary,并将 UTF-8 作为二进制传递给函数。如果函数中的源数据也是来自 SQL 的 nvarchar,则需要继续将该二进制数据转换推回源 C#(可能到存储点为 varbinary,基本上我不知道你的其余部分是什么系统看起来像)。

另一种方法是在 CLR 中编写此函数。使用 C# 将 UCS-2 转换为 UTF-8,然后也在那里进行 Base64 编码。

关于c# - Base64 在 SQL 中编码一个 utf8 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14319669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com