C# mysql 数据乱码

额,饿了 2018-08-03 04:17:30
config 文件 连接串 添加 CHARSET=latin1; 也是不行
 <add name="strcon" connectionString="Database=dbshuJuKu;datasource=127.0.0.1;port=3306;user=root;pwd=123456;" />



...全文
193 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
大师兄石头 2018-08-04
  • 打赏
  • 举报
回复
楼主的问题是由于没有进行数据库默认编码的设置或者配置文件没有生效导致的(字符编码未设置utf8)。
解决这个问题需要编辑配置文件,设置my.ini文件
比如
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 128M
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
# These are commonly set, remove the # and set as required.
basedir = D:\Program\MySQL\MySqlRelease
datadir = D:\Program\MySQL\MySqlRelease\data
port = 3306
# server_id = .....
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
join_buffer_size = 128M
sort_buffer_size = 16M
read_rnd_buffer_size = 16M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

如果是在windows上面安装的,需要将之前的服务卸载掉
命令为: mysqld --remove
重新安装服务并让配置文件生效的命令:
mysqld --install MySQL --defaults-file="D:\Program\MySQL\my.ini" 注意"D:\Program\MySQL\my.ini"要替换为需要加载的配置文件全路径

希望能帮到你
xuzuning 2018-08-03
  • 打赏
  • 举报
回复
MySQL 的字符集取决于字段的 COLLATE 属性
若字段没有指定 COLLATE 则取表的 DEFINE CHARSET
若表没有指定 DEFINE CHARSET 则取数据库的 DEFINE CHARSET
若数据库没有指定 DEFINE CHARSET 则取数据库系统的默认字符集(在安装时指定的)
虽然你可在后期通过修改 my.ini 来改变 Mysql 的默认字符集,但之前创建的库、表、字段都可能出现字符集问题
毕竟数据库是为众人服务的,所以最好不要随意修改默认设置

由于 MySQL 的字符集取决于字段的 COLLATE 属性,所以允许同一表的不同字段可以拥有不同的字符集
通过 set names 字符集代号 指令,MySQL 可以自动进行字符集间的转换
唯一需要你做的是:给字段指定一个恰当的 COLLATE,对于中文就是 gbk、utf8、unicode 之一

latin1 是欧洲第一套字符集,属单字节字符集,而汉字属多字节字符集
如果你没有给中文字段指定宽字符字符集,那么可以在读取后做编码转换
latin1 的内码范围是 0~255,天然包容任何字符集(但需要转码处理)
  • 打赏
  • 举报
回复
然后就是把你的表对应的语言调整为utf8
COLLATE='utf8_general_ci'
  • 打赏
  • 举报
回复
Server=127.0.0.1;Port=3306;Database=test; User=root;Password=123456;Connection Timeout=600;Charset=utf8

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧