我有一个使用utf8_general_ci编码的mysql数据库,
我使用utf-8页面和文件编码连接同样的数据库使用php没有问题, 但是当我用C#连接mysql时,我得到像这样的字母 غزة
我编辑了连接字符串变成了这样
server=localhost;password=root;User Id=root;Persist Security Info=True;database=mydatabase;Character Set=utf8
但是问题仍然存在。
我有一个使用utf8_general_ci编码的mysql数据库,
我使用utf-8页面和文件编码连接同样的数据库使用php没有问题, 但是当我用C#连接mysql时,我得到像这样的字母 غزة
我编辑了连接字符串变成了这样
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,否则将会失败。
您能尝试一下:
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);
祝你好运
关于这种技术的更多信息,请访问http://social.msdn.microsoft.com/forums/en-us/csharpgeneral/thread/BF68DDD8-3D95-4478-B84A-6570A2E20AE5
غزة
是 غزة
的乱码表示,可以使用 utf8 或 utf8mb4 进行表示。不过,一般来说最好选择 utf8mb4。 - Rick JamesCHARSET应该是大写字母
Server=localhost;Port=3306;Database=xxx;Uid=x xx;Pwd=xxxx;CHARSET=utf8;
以防之后有人来到这里。
我需要使用EF6和MySQL创建一个种子方法,以加载SQL文件。运行后,数据库中出现了奇怪的字符,如?代替了é、ó、á等字符。
解决方案: 确保我使用正确的字符集读取文件:在我的情况下是UTF8。
var path = System.AppDomain.CurrentDomain.BaseDirectory;
var sql = System.IO.File.ReadAllText(path + "../../Migrations/SeedData/scripts/sectores.sql", Encoding.UTF8);
然后,M.Shakeri提醒:
在web.config的cxn字符串中使用CHARSET=utf8。将CHARSET作为大写字母,utf8作为小写字母。
希望这有所帮助。
R.
这个对我有用:
"datasource=xxx;port=3306;username=xxx;password=xxx;database=xxx;charset=utf8mb4"
我发现一件事,但还没有机会仔细浏览,那就是这里提供的排序图表:http://www.collation-charts.org/mysql60/
这将展示哪些字符属于给定的MySQL排序规则,以便您可以为您的数据集选择最佳选项。
在连接字符串中设置字符集是指发送到服务器的查询的字符集。它不会影响从服务器返回的结果。
https://dev.mysql.com/doc/connectors/en/connector-net-connection-options.html
我发现一种指定客户端字符集的方法是在打开连接后运行以下代码:
set character_set_results='utf8';
string.Replace("\xFFFD", "");
,这显然会在某人的名字中包含一个小写字母时引起问题。 - Robert H