2009-04-21 3 views
4

MySQL 데이터베이스에 문자열을 삽입하려고합니다. 서버에서 쿼리를 실행하여 삽입 할 수 있지만 "Iñtërnâtiônàlizætiøn"삽입하려면 내 C# 소스 파일을 사용하려고하면 "Ià ± tÃ"rnà ¢ tiÃ'nà lizÃ|tiøn "얻을. 매개 변수로 추가하고 추가하려고 시도했습니다. charset = utf8을 연결 문자열에 추가했으나 운이 없습니다. 데이터베이스의 테이블에는 문자 세트로 utf8이 있습니다. 나는 뭔가를 놓친다. 당신이 N ''또는 _utf8 ''로 유니 코드/UTF8 있다고 지정해야C# : MySQL을 사용하는 문자열의 유니 코드

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

@를 삭제하더라도 SQL Server에서와 마찬가지입니다. 나는 이것으로 완전히 당황하게된다. 나는 이스케이프 된 유니 코드 형식 (\ uXXXX)으로 문자열을 추가하는 방법을 시도해 보았다. – Echilon

+0

SQL Server에서 DB 필드가 nvarchar이고 N ''("INSERT'resources' (id, somefield) VALUES (20004, N'Internâti nàlizætiøn ');")를 사용하고 있습니까? – laktak

+0

그것은 nvarchar이고 N '을 사용하고 있습니다. – Echilon

답변

0

:

의 (a의 StringBuilder를 사용) 내 코드

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

행운을 빈다. 쿼리가 실행될 때 여전히 가비지가 생기지 않을까 걱정됩니다. – Echilon

+0

btw, 인코딩을 사용하여 'Iñtërnâtiônàlizætiøn'텍스트를 cointains하는 .cs 파일을 저장 했습니까? VS, 다른 이름으로 저장을 선택하고 저장 명령의 화살표를 클릭하십시오. – laktak

+0

UTF8로 저장됩니다. – Echilon

0

당신은 아마 필요 올바른 culture를 선택하고 string.Format에 제공하십시오. 당신은 아래의 예 영감을 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');"); 
} 

참고.