C# Mysql UTF8 Encoding

a 夏天 提交于 2019-12-28 04:02:05

问题


I have a mysql database with utf8_general_ci encoding ,

i'm connecting to the same database with php using utf-8 page and file encode and no problem but when connection mysql with C# i have letters like this غزة

i editit the connection string to be like this

server=localhost;password=root;User Id=root;Persist Security Info=True;database=mydatabase;Character Set=utf8

but the same problem .


回答1:


Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; CharSet=utf8;

Note! Use lower case value utf8 and not upper case UTF8 as this will fail.

See http://www.connectionstrings.com/mysql




回答2:


could you try:

Server=localhost;Port=3306;Database=xxx;Uid=x xx;Pwd=xxxx;charset=utf8;"

Edit: I got a new idea:

//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);

good luck

more info about this technique http://social.msdn.microsoft.com/forums/en-us/csharpgeneral/thread/BF68DDD8-3D95-4478-B84A-6570A2E20AE5




回答3:


You might need to use the "utf8mb4" character set for the column in order to support 4 byte characters like this: "λ𝛌 "

The utf8 charset only supports 1-3 bytes per character and thus can't support all unicode characters.

See http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html for more details.




回答4:


CHARSET should be uppercase

Server=localhost;Port=3306;Database=xxx;Uid=x xx;Pwd=xxxx;CHARSET=utf8;



回答5:


One thing I found, but haven't had the opportunity to really browse is the collation charts available here: http://www.collation-charts.org/mysql60/

This will show you which characters are part of a given MySQL collation so you can pick the best option for your dataset.




回答6:


Just in case some come here later.

I needed to create a Seed method using Mysql with EF6, to load a SQL file. After running it I got weird characters on database like ? replacing é, ó, á

SOLUTION: Make sure I read the file using the right charset: UTF8 on my case.

     var path = System.AppDomain.CurrentDomain.BaseDirectory;
     var sql = System.IO.File.ReadAllText(path + "../../Migrations/SeedData/scripts/sectores.sql", Encoding.UTF8);

And then M.Shakeri reminder:

CHARSET=utf8 on cxn string in web.config. Using CHARSET as uppercase and utf8 lowercase.

Hope it helps.

R.




回答7:


Setting the charset in the connection string refers to the charset of the queries sent to the server. It does not affect the results returned from the server.

https://dev.mysql.com/doc/connectors/en/connector-net-connection-options.html

One way I have found to specify the charset from the client is to run this after opening the connection.

set character_set_results='utf8';



来源:https://stackoverflow.com/questions/11689129/c-sharp-mysql-utf8-encoding

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!