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 注入的秘诀。
我在 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 注入的秘诀。