在线求解 C# 读取 MYSQL 中文乱码的问题,网上很多都要改数据库,我这边抽的是公司买的一个系统,怕有什么影响不敢改。 哪位能说个不改数据库能读取中文的办法。在线等。一直等。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参考下贴中的检查方法,贴出你的检查结果, 可以实现不改变数据库字符集用C#读取中文,但要分析如何转换。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspxMySQL 中文显示乱码 show variables like 'char%'; 能给看看么。 我第一次搞MYSQL,好晕。读个数据都这么费劲show variables like 'char%' ;+--------------------------+--------------------------------------------------+| Variable_name | Value |+--------------------------+--------------------------------------------------+| character_set_client | utf8 || character_set_connection | utf8 || character_set_database | gb2312 || character_set_filesystem | binary || character_set_results | utf8 || character_set_server | latin1 || character_set_system | utf8 || character_sets_dir | D:\sinfor\MySQL\MySQL Server 5.0\share\charsets\ |+--------------------------+--------------------------------------------------+8 rows in set 我已经贴出来了。 后面怎么做? 我改了my.ini 都设置了gb2312C#连接也加了charset 都没用 mysql> set names gb2312;Query OK, 0 rows affectedmysql>试了好多。 都没用。 无奈了。 字符集问题,用MYSQLDUMP导出数据,用WORD之类的软件打开此文件,看看有无提示,在统一字符集下重新插入记录 还有其他办法么。 我在navicat 里查是能查出中文的。 到C#中就总是乱码了 检查MY。INI中default-character-set设置ORnavicat中的字符集设置 set names latin1orset names utf8试试 哎,只是能换成不一样的乱码,都展示不出来中文。navicat的字符集设置是怎么看的呢? 还要贴什么呢。 MYSQL不会用,不是要我把数据库里的表逐个show create table TableName一下吧.到底解决这个问题的关键点在哪呢。 为什么我用客户端软件可以。用C#就跑出来乱码 mysql> show create table username; +----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| Table | Create Table |+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+| username | CREATE TABLE `username` ( `crc` int(10) unsigned NOT NULL, `name` varchar(128) NOT NULL, `show_name` varchar(128) NOT NULL, PRIMARY KEY (`crc`), KEY `index_user` (`crc`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 |+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+1 row in setmysql> show full columns from username;+-----------+------------------+-------------------+------+-----+---------+-------+---------------------------------+---------+| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |+-----------+------------------+-------------------+------+-----+---------+-------+---------------------------------+---------+| crc | int(10) unsigned | NULL | NO | PRI | NULL | | select,insert,update,references | || name | varchar(128) | latin1_swedish_ci | NO | | NULL | | select,insert,update,references | || show_name | varchar(128) | latin1_swedish_ci | NO | | NULL | | select,insert,update,references | |+-----------+------------------+-------------------+------+-----+---------+-------+---------------------------------+---------+3 rows in setmysql> show variables like 'char%';+--------------------------+--------------------------------------------------+| Variable_name | Value |+--------------------------+--------------------------------------------------+| character_set_client | utf8 || character_set_connection | utf8 || character_set_database | gb2312 || character_set_filesystem | binary || character_set_results | utf8 || character_set_server | latin1 || character_set_system | utf8 || character_sets_dir | D:\sinfor\MySQL\MySQL Server 5.0\share\charsets\ |+--------------------------+--------------------------------------------------+8 rows in setmysql> | username | CREATE TABLE `username` ( `crc` int(10) unsigned NOT NULL, `name` varchar(128) NOT NULL, `show_name` varchar(128) NOT NULL, PRIMARY KEY (`crc`), KEY `index_user` (`crc`)) ENGINE=InnoDB DEFAULT CHARSET=latin1 问题在这里,你的表使用的是latin1字符集。你可以在程序中使用类似下面代码以转换。System.Text.Encoding.GetEncoding("gb2312").GetString(System.Text.Encoding.GetEncoding("iso-8859-1").GetBytes(row[1].ToString())) 感谢版主,gb2312没有转换成功,用UTF-8成功了。 谢谢! mysql 建立临时表问题 如何解决TEXT类型列不能成为主健或主健组成部分的问题? win mysql 启动失败: Plugin 'FEDERATED' is disabled. 【安全】保护你的数据库安全 mysql数据库存放在哪里? 白给分的题哦,来抢啊 请问如果CPU是64拉的,那么MYSQL5.0的64位版比32位版快吗?谢谢 求城市对应的区域数据文件 问两条sql语句中%的作用 Navicat连不上远程服务端的数据库 请教一个mysql多表级联更新和删除的问题 求CB6.0操作MYSQL5.1方法
MySQL 中文显示乱码
能给看看么。 我第一次搞MYSQL,好晕。读个数据都这么费劲show variables like 'char%' ;
+--------------------------+--------------------------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | gb2312 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | D:\sinfor\MySQL\MySQL Server 5.0\share\charsets\ |
+--------------------------+--------------------------------------------------+
8 rows in set
我已经贴出来了。 后面怎么做? 我改了my.ini 都设置了gb2312C#连接也加了charset 都没用
gb2312;
Query OK, 0 rows affected
mysql>试了好多。 都没用。 无奈了。
在统一字符集下重新插入记录
default-character-set设置
OR
navicat中的字符集设置
or
set names utf8
试试
navicat的字符集设置是怎么看的呢?
还要贴什么呢。 MYSQL不会用,不是要我把数据库里的表逐个show create table TableName一下吧.到底解决这个问题的关键点在哪呢。 为什么我用客户端软件可以。用C#就跑出来乱码
mysql> show create table username;
+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| username | CREATE TABLE `username` (
`crc` int(10) unsigned NOT NULL,
`name` varchar(128) NOT NULL,
`show_name` varchar(128) NOT NULL,
PRIMARY KEY (`crc`),
KEY `index_user` (`crc`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set
mysql> show full columns from username;
+-----------+------------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| Field | Type | Collation | Null | Key | Default | Extra | Privileges | Comment |
+-----------+------------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| crc | int(10) unsigned | NULL | NO | PRI | NULL | | select,insert,update,references | |
| name | varchar(128) | latin1_swedish_ci | NO | | NULL | | select,insert,update,references | |
| show_name | varchar(128) | latin1_swedish_ci | NO | | NULL | | select,insert,update,references | |
+-----------+------------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
3 rows in setmysql> show variables like 'char%';
+--------------------------+--------------------------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | gb2312 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | D:\sinfor\MySQL\MySQL Server 5.0\share\charsets\ |
+--------------------------+--------------------------------------------------+
8 rows in setmysql>
`crc` int(10) unsigned NOT NULL,
`name` varchar(128) NOT NULL,
`show_name` varchar(128) NOT NULL,
PRIMARY KEY (`crc`),
KEY `index_user` (`crc`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
问题在这里,你的表使用的是latin1字符集。你可以在程序中使用类似下面代码以转换。
System.Text.Encoding.GetEncoding("gb2312").GetString(System.Text.Encoding.GetEncoding("iso-8859-1").GetBytes(row[1].ToString()))
感谢版主,gb2312没有转换成功,用UTF-8成功了。 谢谢!