0

MySql4 に保存されている 4000 人のユーザーを持つ機関の新しい Web サイトを書いています。

mysql-connector/net を使用して、asp.net 経由で MySql データベースに接続しています。

Unicode モードの情報を更新することを除いて、すべて問題ありません。

残念ながら、私はユニコードについてあまり知りません!

MySql データベースからのデータの接続と読み取りは次のようになります。

using MySql.Data.MySqlClient;
...
MySqlConnection con;
MySqlCommand cmd;

string tempstr = "Database=DB-NAME;Data Source=SOURCE;charset=utf8;User Id=USER;Password=PASS";
con = new MySqlConnection(tempstr);
con.Open();
cmd = con.CreateCommand();
cmd.CommandText = "select * from list_membership";
cmd.CommandType = CommandType.Text;
MySqlDataReader reader = cmd.ExecuteReader();
reader.Read();

たとえば、アドレスを読み取ると、次のようになります: Ø²ÙØ¬Ø§Ù

幸いなことに、関数を使用して解決しました:

public string DecodeFromUtf8(string utf8String)
{
   // copy the string as UTF-8 bytes.
   byte[] utf8Bytes = new byte[utf8String.Length];
   for (int i = 0; i < utf8String.Length; ++i)
   {
       //Debug.Assert( 0 <= utf8String[i] && utf8String[i] <= 255, "the char must be in byte's range");
       utf8Bytes[i] = (byte)utf8String[i];
   }
   return Encoding.UTF8.GetString(utf8Bytes, 0, utf8Bytes.Length);
}

ここで、ジャンク文字列を関数に送信すると、次のような正しい形式が得られます:

問題は、たとえば住所フィールドを更新または挿入したい場合、次のような疑問符を除いて何もデータベースに保存されないことです: ???? ???????

誰が私が何をすべきか知っていますか?! DecodeFromUtf8 関数の逆形式はありますか?

私の悪い英語を許してください、ありがとう。

4

1 に答える 1