2009-04-21 10 views
4

MySQLデータベースに文字列を挿入しようとしています。私はサーバー上でクエリを実行して挿入することができますが、私は "Iñtërnâtiônàlizætiøn"を挿入するために私のC#ソースファイルを使用しようとすると、 "IÃtã«rnâtiÃ'nÃlizÃ|私はパラメータとして追加しようとしましたが、charset = utf8を接続文字列に追加しようとしましたが、運がありません。データベースのテーブルには文字セットとしてのutf8があります。私は何かが欠けている。あなたはそれがN '' または_utf8 '' でのUnicode/UTF8だということを指定する必要がC#:MySQLを使用した文字列のUnicode

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'Inte'rnâtinàlizætiøn '); ")を使用していますか? – laktak

+0

これはnvarcharであり、N 'を使用しています – Echilon

答えて

0

この

は(の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、Save asをチェックして、saveコマンドの矢印をクリックします。 – laktak

+0

UTF8として保存されます。 – Echilon

0

あなたはおそらくする必要があり正しいカルチャを選択してstring.Formatに渡します。 あなたは(:未テスト!WARNING):以下の例を触発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');"); 
} 

注意。

関連する問題