c# - UTF8编码为base64string并存入数据库

标签 c# sql-server utf-8 encode

我目前正尝试在将数据存储到我的数据库之前对其进行编码。

try
{
    byte[] byteEncString = new byte[_strToConvert.Length];
    byteEncString = System.Text.Encoding.UTF8.GetBytes(_strToConvert);
    string strEncoded = Convert.ToBase64String(byteEncString);
    return strEncoded;
}

有谁知道一个15个字符的字符串经过utf8和base64string编码后会有多长?另外,有上限吗?我在 sql server 上的字段只有 50,我想将它限制在该范围内。想法?

最佳答案

好吧,一方面,创建一个字节数组然后忽略它是没有意义的 - 所以你的代码会更简单:

byte[] byteEncString = Encoding.UTF8.GetBytes(_strToConvert);
return Convert.ToBase64String(byteEncString);

当 UTF-8 编码1 时,.NET char 可以以 3 个字节结束,因此最大为 45 个字节。但是,base64 将 3 个字节转换为 4 个字符,因此结果是最多 60 个字符的 base64 编码字符串。


1 这是因为任何不在基本多语言平面中的字符都表示为代理对。该对最终为 4 个字节,但输入了 2 个字符,因此在这种情况下平均“每个 char 的字节数”仅为 2。

关于c# - UTF8编码为base64string并存入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5234810/

相关文章:

sql-server - SQL Server 2012 内联表值函数返回空行

sql - 如何从表中将每 2 行变成单行

sql - 选择前 n 行

android-studio - Android Studio不显示编码utf 8字符

php - UTF-8 和 HTML 实体有什么区别?

C# HttpClient - PostAsync 不返回(即使使用 ConfigureAwait)

c# - 自动展开 RadGridView 新增行的 RowDetails

c# - UWP 导航查看同一类型的多个页面

c# - 在 XP 中禁用 WiFi 基础架构访问

php - preg_replace 和 preg_match 阿拉伯字符