Utf8_general_ciエンコーディングのmysqlデータベースがあります。
私はutf-8ページとファイルエンコードを使用してphpで同じデータベースに接続していますが、問題はありませんが、mysqlとC#を接続すると、次のような文字が表示されますغزة
接続文字列を次のように編集します
server=localhost;password=root;User Id=root;Persist Security Info=True;database=mydatabase;Character Set=utf8
しかし同じ問題。
Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; CharSet=utf8;
注意!これが失敗するため、大文字のUTF8ではなく小文字のutf8を使用してください。
http://www.connectionstrings.com/mysql を参照してください
あなたは試すことができますか:
Server=localhost;Port=3306;Database=xxx;Uid=x xx;Pwd=xxxx;charset=utf8;"
編集:私は新しいアイデアを得ました:
//To encode a string to UTF8 encoding
string source = "hello world";
byte [] UTF8encodes = UTF8Encoding.UTF8.GetBytes(source);
//get the string from UTF8 encoding
string plainText = UTF8Encoding.UTF8.GetString(UTF8encodes);
幸運を
次のような4バイト文字をサポートするために、列に「utf8mb4」文字セットを使用する必要がある場合があります:「λ????」
Utf8文字セットは1文字あたり1〜3バイトしかサポートしないため、すべてのUnicode文字をサポートすることはできません。
詳細は http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html を参照してください。
CHARSETは大文字にする必要があります
Server=localhost;Port=3306;Database=xxx;Uid=x xx;Pwd=xxxx;CHARSET=utf8;
私が見つけたものの、実際に閲覧する機会がなかったものは、ここにある照合チャートです: http://www.collation-charts.org/mysql60/
これにより、特定のMySQL照合に含まれる文字が表示されるため、データセットに最適なオプションを選択できます。
接続文字列に文字セットを設定すると、サーバーに送信されるクエリの文字セットを参照します。サーバーから返されるresultsには影響しません。
https://dev.mysql.com/doc/connectors/en/connector-net-connection-options.html
クライアントから文字セットを指定する方法の1つは、接続を開いた後にこれを実行することです。
set character_set_results='utf8';
後で来る人がいる場合に備えて。
SQLファイルをロードするには、EF6でMysqlを使用してSeedメソッドを作成する必要がありました。実行後、データベースに奇妙な文字が表示されました?é、ó、áを置き換える
解決策:正しい文字セットを使用してファイルを読み取るようにします。私の場合はUTF8です。
var path = System.AppDomain.CurrentDomain.BaseDirectory;
var sql = System.IO.File.ReadAllText(path + "../../Migrations/SeedData/scripts/sectores.sql", Encoding.UTF8);
そして、M.Shakeriのリマインダー:
CHARSET = utf8(web.configのcxn文字列)。 CHARSETを大文字、utf8を小文字として使用します。
それが役に立てば幸い。
R.