Символы Unicode не поддерживаются в базе данных SQL - PullRequest
1 голос
/ 04 апреля 2020

Я использую C# в Visual Studio и пытаюсь вставить некоторые данные в базу данных SQL. Некоторые символы Юникода превращаются в знаки вопроса, когда я пытаюсь вставить их в БД. Они прекрасно отображаются в коде или в MessageBox.

Например: ș Ș ț Ț Ă ă Î î превращены в ? ? ? ? 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();
        }

И вот такой вывод:

values in the table

Мой вопрос в том, что UTF использует SQL базу данных, и если есть способ вставить эти символы без их изменения.

1 Ответ

1 голос
/ 04 апреля 2020

Чтобы отправить строки Unicode, префикс строки с N:

N'This is Unicode'

без префикса будет обработан любой 8-битной кодировкой.

Кроме того, использование конкатенации строк для построения SQL это рецепт для SQL инъекций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...