Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL数据库中不支持Unicode字符_C#_Sql_Visual Studio 2017 - Fatal编程技术网

C# SQL数据库中不支持Unicode字符

C# SQL数据库中不支持Unicode字符,c#,sql,visual-studio-2017,C#,Sql,Visual Studio 2017,我在VisualStudio中使用C#,并试图将一些数据插入SQL数据库。 当我尝试将某些unicode字符插入数据库时,它们会变成问号。 它们在代码或消息框中显示得很好 例如:被转换为?A AÎî//罗马尼亚字符 这是表格: CREATE TABLE [dbo].[Bookshelf] ( [Id] INT NOT NULL PRIMARY KEY IDENTITY(1, 1), [Text] NVARCHAR(50) NOT NULL ) 代码如下: privat

我在VisualStudio中使用C#,并试图将一些数据插入SQL数据库。 当我尝试将某些unicode字符插入数据库时,它们会变成问号。 它们在代码或消息框中显示得很好

例如:
被转换为
?A AÎî
//罗马尼亚字符

这是表格:

    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注入的一种方法