C #: Unicode из строки с MySQL - PullRequest
       8

C #: Unicode из строки с MySQL

4 голосов
/ 21 апреля 2009

Я пытаюсь вставить строку в базу данных MySQL. Я могу вставить его, запустив запрос на сервере, но когда я пытаюсь использовать исходный файл C # для вставки «Iñtërnâtiônàlizætiøn», я получаю «Iñtë rnà ¢ tiônà lizætiøn ». Я попытался добавить его в качестве параметра и добавить; charset = utf8 в строку подключения, но не повезло. Таблица в базе данных имеет utf8 в качестве своего набора символов. Я что-то упустил?

Это мой код (с использованием StringBuilder):

sqlBuffer.Append(
    string.Format(
        @"INSERT `resources` (id, somefield) 
        VALUES (20004,'Iñtërnâtiônàlizætiøn');");

Ответы [ 2 ]

0 голосов
/ 16 ноября 2011

Вам, вероятно, нужно выбрать правильную культуру и предоставить ее для строки. Формат. Возможно, вы захотите прочитать http://msdn.microsoft.com/en-us/library/1ksz8yb7.aspx, что вдохновило приведенный ниже пример (ВНИМАНИЕ: не проверено!):

using System.Globalization;

// ...

string[] cultureNames = { "en-US", "fr-FR", "de-DE", "es-ES" };    

// this loop will inject your string using various cultures
foreach (string cultureName in cultureNames)
{
   CultureInfo culture = new CultureInfo(cultureName);

   sqlBuffer.Append(
     string.Format(culture,
       @"INSERT `resources` (id, somefield) 
       VALUES (20004, N'Iñtërnâtiônàlizætiøn');");
}

Обратите внимание, что вам также необходимо проверить настройки таблицы на предмет сопоставления набора символов.

0 голосов
/ 21 апреля 2009

Вы должны указать, что это Unicode / UTF8 с N '' или _utf8 '':

sqlBuffer.Append(
    string.Format(
        @"INSERT `resources` (id, somefield) 
        VALUES (20004, N'Iñtërnâtiônàlizætiøn');");
...