c# - 如何在 SQL 数据库中保存 unicode 字符
问题描述
我正在尝试使用 ADO.NET 类将 ThinSpace (\u2009) 保存到数据库中,但我得到的是“?” db 中的符号代替 ThinSpace。我以 UTF8 格式保存到 db 的字符串。
var content = "This is a test";
byte[] bytes = Encoding.Default.GetBytes(content);
content = Encoding.UTF8.GetString(bytes);
content = content.Replace(' ', '\u2009');
using (var con = new SqlConnection(connStr))
{
con.Open();
using (var com = new SqlCommand("insert into Messages values ('" + content + "')", con))
{
com.ExecuteNonQuery();
}
}
数据库中的结果
解决方案
我相信您正在尝试将 unicode 插入VARCHAR
列中。下面的SQL:
CREATE TABLE MessageBodies
(
NVARCHARText NVARCHAR(255),
VARCHARText VARCHAR(255)
);
DECLARE @Text AS NVARCHAR(MAX) = NCHAR(2009);
INSERT INTO UnicodeInserts
VALUES (@Text, @Text);
SELECT
*
FROM
MessageBodies;
回报:
我们看到 SQL Server Management Studio为列?
中的未知字符呈现 a VARCHAR
。您需要将您的列转换NVARCHAR
为 以使文本按预期呈现。
推荐阅读
- paypal - Paypal 重定向到 https://www.paypal.com/webapps/hermes?token=
- c# - 在 C# 的 Vector.Diagnostics(用于 CANoe)程序集中使用 Request 和 Ecu 类
- linux - 在 gdb 中调用 malloc 时出现负数
- java - MalformedJsonException:第 1 行第 343 列路径 $.nickname 的意外值
- facebook - 使用我网站中的共享按钮,从我的帐户登录到其他页面上的 facebook 共享
- javascript - 画布在 iOS 移动设备上无法正常工作
- bash - bash 脚本中的“`$@': not a valid identifier”错误
- python - Python 构造函数应该启动服务还是只初始化变量?
- python - 当鼠标光标位于屏幕上的任何位置时,如何在 tkinter 上使用鼠标滚轮滚动滚动条?
- sql - 对于 n 个多边形,Postgres st_difference 执行时间太长