Сохранить строку UTF8 в SQL Server - PullRequest
2 голосов
/ 23 февраля 2012

У меня есть строка в UTF8, например:

Thermal Oxide: 0 Å to 40 μm

, и я хочу сохранить ее в SQL Server.

Когда я сохраняю ее в типе данных ntext / nvarchar - она ​​сохраняется какэто:

Thermal Oxide: 0 ? to 40 ?m

Что я могу сделать?

Ответы [ 2 ]

12 голосов
/ 23 февраля 2012

Перед цитируемой строкой введите N:

INSERT INTO someTable (myField) VALUES (N'Thermal Oxide: 0 Å to 40 μm')
3 голосов
/ 23 февраля 2012

У меня есть строка в UTF8, например:

На самом деле, нет, у вас нет - у вас есть строка Unicode. UTF8, однако, относится только к тому, как он кодируется, то есть к хранилищу. Если вы хотите сохранить его, хорошо; просто: убедитесь, что столбец, в котором вы храните его, равен nvarchar(somelen) (или аналогичному), и что вы используете параметры для его хранения. Если вы просто используете cmd.Parameters.AddWithValue("paramName", yourString);, это будет хорошо (для TSQL, как insert [tablename] (...fields...) values (..., @foo) и т. Д.). Аналогично, любой ORM / микро-ORM / другой инструмент базы данных будет хорошо работать с этим, если столбец nvarchar(somelen) или подобный. Например, с «dapper»:

string s = "Thermal Oxide: 0 Å to 40 μm";
connection.Execute("insert [tablename] (colname) values (@s)", new {s});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...