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 関数の逆形式はありますか?
私の悪い英語を許してください、ありがとう。