SQL 数据库不支持 Unicode 字符

Unicode characters not supported in a SQL database

我在 Visual Studio 中使用 C#,我正在尝试将一些数据插入 SQL 数据库。 当我尝试将它们插入数据库时​​,一些 unicode 字符变成了问号。 它们在代码或 MessageBox 中显示得很好。

例如:ș Ș ț Ț Ă ă Î î转为? ? ? ? A a Î î //罗马尼亚字符

这里是 table:

    CREATE TABLE [dbo].[Bookshelf]
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY(1, 1), 
    [Text] NVARCHAR(50) NOT NULL
)

这是代码:

private void Form1_Load(object sender, EventArgs e)
        {
            SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Comsa\source\repos\Program\Program\Database1.mdf;Integrated Security=True");
            con.Open();

            string value = "ș Ș ț Ț Ă ă Î î";
            SqlCommand cmd = new SqlCommand("INSERT INTO Bookshelf(Text) VALUES('" + value + "')",con);
            cmd.ExecuteNonQuery();
            con.Close();
        }

这是输出:

我的问题是 SQL 数据库使用什么 UTF,以及是否有办法在不改变它们的情况下插入这些字符。

要发送 Unicode 字符串,请在字符串前加上 N:

N'This is Unicode'

如果没有前缀,它将被任何适用的 8 位编码处理。

此外,使用字符串连接构建 SQL 是 SQL 注入的秘诀。