-
2021-01-26 18:20:03
使用C#连接MySQL做B/S结构的系统程序出现乱码问题。
解决方法如下:
视图:charset=gbk
控制器:正常...
操作数据库:
StringBuilder strSql = new StringBuilder();
strSql.Append("UPDATE users SET ");
strSql.Append(model.fieldName);
strSql.Append("='");
strSql.Append(model.fieldValue);
strSql.Append("' WHERE userNo='");
strSql.Append(model.userNo);
strSql.Append("'");
return (DbHelperMySQL.ExecuteSql(strSql.ToString()) > 0);
DbHelperMySQL.ExecuteSql源码
public static int ExecuteSql(string SQLString, int Times, params MySqlParameter[] sqlparams)
{
MySqlConnection conn = new MySqlConnection(_connectionString);
MySqlCommand cmd = new MySqlCommand("set names gbk"); //修改了此处。原先MySqlCommand cmd = new MySqlCommand();
try
{
PrepareCommand(cmd, conn, null, CommandType.Text, SQLString, Times, sqlparams);
int rows = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return rows;
}
catch
{
throw;
}
finally
{
cmd.Dispose();
if(conn.State == ConnectionState.Open) conn.Close();
conn.Dispose();
cmd = null;
conn = null;
}
}
//经过以上修改后ok!
更多相关内容 -
解决 docker mysql 中文乱码问题
2021-01-20 12:50:06使用 docker 启动 mysql 容器可能会出现中文乱码的情况,这里记录如何制作支持中文的 mysql 镜像 docker版本:18.06 mysql 版本:5.7 1. 创建 my.cnf 文件 [client] default-character-set=utf8 [mysql] default-... -
Mysql中文乱码问题的最佳解决方法
2020-12-15 03:07:20一般来说,造成MySQL出现中文乱码的因素主要有下列几点: 1.server本身字符集设定的问题,例如还停留在latin1 2.table的语系设定问题(包含character与collation) 3.客户端程序(例如php)的连线语系设定问题 对此,... -
Windows服务器MySQL中文乱码的解决方法
2020-09-10 11:06:21主要介绍了MySQL中文乱码的一些解决方案,本文同时分解了MySQL中文乱码的原因分析,需要的朋友可以参考下 -
python查询mysql中文乱码问题
2020-09-10 11:56:46本文主要是解决python2.7在查询mysql时产生中文乱码的处理方法,非常的有用,亲测可行,推荐给大家 -
windows环境下Mysql中文乱码问题解决方法
2020-09-10 20:38:52在搭建Mysql环境的时候遇到了中文乱码问题,下面与大家分享下具体的解决方法,感兴趣的朋友可以参考下哈,希望对大家有所帮助 -
c语言连接mysql中文乱码怎么办
2021-02-27 09:56:48c语言连接mysql中文乱码怎么办发布时间:2020-06-30 13:42:44来源:亿速云阅读:96作者:清晨这篇文章主要介绍c语言连接mysql中文乱码怎么办,文中示例介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要...c语言连接mysql中文乱码怎么办
发布时间:2020-06-30 13:42:44
来源:亿速云
阅读:96
作者:清晨
这篇文章主要介绍c语言连接mysql中文乱码怎么办,文中示例介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
1. 先上图一张,看看什么是乱码
2. 理解一下VC++中的字符串编码
在以前VC++6.0中默认的字符集是多字节字符集(MBCS:Multi-Byte Character Set),而VS2005及以后默认的字符集是Unicode,这样导致以前在VC6.0中非常简单实用的各类字符操作和函数在VS2010环境下运行时会报各种各样的错误。
字符集可以通过项目属性修改:项目属性→配置属性→常规→字符集。我的字符集(VS2013编码环境)为:
注:CString在Unicode和多字节字符集下的区别:
CString 是基于 TCHAR 数据类型的。如果为程序的生成定义了符号 _UNICODE,则会将 TCHAR 定义为 wchar_t 类型(一个 16 位的字符编码类型);否则,会将它定义为 char(普通的 8 位字符编码)。于是,在 Unicode 下,CString 由 16 位字符组成。如果没有 Unicode,它们则由 char 类型的字符组成。
3. 解决办法
在C程序里向数据库插入数据之前,应该加上这一句:char * query = "set names \'GBK\'";
mysql_query(con, query);
4. 为什么会出现乱码?
在控制台登录mysql后输入查询语句:Show variables like 'character%';
character_set_client:客户端的字符集
character_set_results:结果字符集
character_set_connection: 连接字符集
这三个系统参数的作用:
信息输入路径: client→connection→server
信息输出路径: server→connection→results
故这几个系统参数的值须相同,不然以不同的编码方式传送数据,若编码方式不兼容,则容易造成乱码的问题。
以上是c语言连接mysql中文乱码怎么办的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
-
php写入mysql中文乱码的实例解决方法
2021-01-20 08:03:26php写入mysql出现中文乱码的解决办法是:在建立数据库连接之后,将该连接的编码方式改为中文。 代码如下: $linkID=@mysql_connect(localhost,root,admin); if(!$linkID) { echo 数据库连接失败!; } echo 数据库... -
解决springmvc+mybatis+mysql中文乱码问题
2020-09-03 09:40:13主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下 -
QT(C++)连接MySQL中文乱码解决
2022-05-06 15:34:082、将MySQL编码设置成UTF-8 show variables like 'character_set_%'; 各字段的含有如下: 主要关注的是character_set_client、character_set_connection、character_set_results这三个变量。 他们的含义可以看...方法1、QSqlDatabase对象设置UTF-8编码
QSqlDatabase db; db.exec("SET NAMES 'UTF-8'");
方法2、将MySQL编码设置成UTF-8
show variables like 'character_set_%';
各字段的含有如下:
主要关注的是character_set_client、character_set_connection、character_set_results这三个变量。
他们的含义可以看以下例子:首先client一般会发送一条sql给客户端,比如select * from table where name = ‘某某某’;,在分析的过程中,我们主要对查询参数“某某某”进行分析。
1、首先“某某某”三个字被client端进行编码为二进制流,传输给服务器。
2、服务器收到后,会认为客户端的编码为character_set_client对“某某某”进行解码,获取client发送的字符串sql。
3、解码之后,再把sql转换为character_set_connection格式,使得能与数据库连接的字符集相同。
4、解码成character_set_connection之后,就进行数据比对查询。此时如果要比对的列的字符集与character_set_connection不相等,那显然就是会有问题的。
5、数据查询出来之后,对结果要进行编码,编码的字符集就采用character_set_results字符集,此时如果客户端接收的字符集与character_set_connection不相同,那么客户端解码的数据也会出现问题。设置MySQL编码:
set character_set_client=utf-8; set character_set_connection=utf-8; set character_set_database=utf-8; set character_set_results=utf-8; set character_set_server=utf-8; set collation_database = utf8mb4_unicode_ci; set collation_connection = utf8mb4_unicode_ci;
方法3、MySQL的my.ini文件或my.cnf设置UTF-8
在mysql数据库的安装根目录下找到my.ini,例:C:\ProgramData\MySQL\MySQL Server 8.0
# 在[mysql]下设置mysql客户端默认字符集 default-character-set=utf8 # 在[mysqld]下设置服务端使用的字符集默认为8比特编码的latin1字符集 character-set-server=utf8
然后重启MySQL服务。
方法4、头文件设置UTF-8
#pragma execution_character_set("utf-8")
方法5、使用QString::fromLocal8Bit()
QString sql = QString::fromLocal8Bit("SELECT * FROM table");
-
关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)
2020-12-15 09:14:20最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。 首先: 用show variables like “%colla%”;show varables like “%... -
常见php与mysql中文乱码问题解决办法
2020-12-15 06:48:42乱码问题1:用PHPmyAdmin操作MySQL数据库汉字显示正常,但用PHP网页显示MySQL数据时所有汉字都变成了?号。 症状:用PHPmyAdmin输入汉字正常,但当PHP网页显示MySQL数据时汉字就变成了?号,并且有多少个汉字就有多少... -
php读取mysql中文数据出现乱码的解决方法
2021-01-20 00:43:17解决方法:创建数据库的时候,MySQL 字符集选择’UTF8’,MySQL 连接校对选择utf8_general_ci,这样创建的数据库用来存储中文肯定没有问题,否则,你的中文首先在MySQL中就是乱码,更不要期望它会给你在PHP页面中... -
Linux下mysql中文乱码解决方法
2018-07-18 20:15:45最简单的完美修改方法,修改mysql的my.cnf文件中的字符集键值(注意配置的字段细节) -
c#连接mysql中文乱码解决方案(MySql.Data.dll)
2021-03-22 08:58:37今天用C#类连接mysql数据库出现中文乱码具体解决方案如下:用到的mysql表结构:CREATE TABLE IF NOT EXISTS `tet` (`id` int(11) NOT NULL,`name` varchar(255) NOT NULL,`url` varchar(255) NOT NULL) ENGINE=...今天用C#类连接mysql数据库出现中文乱码具体解决方案如下:
用到的mysql表结构:
CREATE TABLE IF NOT EXISTS `tet` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`url` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
用到的mysql表数据:
INSERT INTO `tet` (`id`, `name`, `url`) VALUES
(1, '百度 ', 'http://www.baidu.com '),
(0, 'google ', 'http://www.google.com.hk '),
(3, '400电话 ', 'http://www.my400800.cn ');
一、查询结果没有问题,在查询条件中如果输入中文查询不到内容,用insert测试为,插入的内容是乱码
首先在MySQL Command Line Client里面输入“SHOW VARIABLES LIKE 'character_set_%';”,可看到如下字符:
Variable_name
Value
character_set_client
utf8
character_set_connection
utf8
character_set_database
utf8
character_set_filesystem
binary
character_set_results
utf8
character_set_server
latin1
character_set_system
utf8
character_sets_dir
C:Program FilesVertrigoServMysqlsharecharsets
可以用如下连接字符串解决中文乱码问题
User Id=test;Host=localhost;Database=eczhou;password=test;charset='gb2312'
二、检索结果和插入内容都是乱码
用MySQL Command Line Client里面输入“SHOW VARIABLES LIKE 'character_set_%';”,可看到如下字符:
Variable_name
Value
character_set_client
utf8
character_set_connection
utf8
character_set_database
utf8
character_set_filesystem
binary
character_set_results
utf8
character_set_server
utf8
character_set_system
utf8
character_sets_dir
/usr/share/mysql/charsets/
即便是连接字符串改成
User Id=test;Host=localhost;Database=eczhou;password=test;charset=utf8 检索的结果还是乱码
郁闷中。。。。。。。
然后用 show variables like 'collation%';显示结果是:
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
经过不懈努力的查找,终于找到问题了,问题就出在上面红色字体的编码上,我的解决方法如下:
连接字符串修改如下:
server=localhost;uid=root;pwd=root;database=test;Charset=latin1
c#代码如下:
///
/// 执行查询语句,返回DataSet
///
/// 查询语句
/// DataSet
public static DataSet Query(string SQLString)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
DataSet ds = new DataSet();
try
{
connection.Open();
MySqlCommand M = new MySqlCommand("set names 'latin1'", connection);
M.ExecuteNonQuery();
//
MySqlDataAdapter da = new MySqlDataAdapter(SQLString, connection);
da.Fill(ds);
}
catch (MySqlException ex)
{
connection.Close();
throw new Exception(ex.Message);
}
finally
{
connection.Close();
}
DataTable dt = ds.Tables[0];
foreach (DataRow dr in dt.Rows)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
dr[i] = Encoding.UTF8.GetString(Encoding.GetEncoding("latin1").GetBytes(dr[i].ToString()));
}
}
return ds;
}
}
一定要注意上面的红色字体。
-
Delphi连接mysql中文乱码的解决办法
2021-01-19 03:29:57MySQL数据库不常使用,以往使用都是连接已有的数据库,从未出现乱码问题。这次做到演示版的程序,需要自己建立MySQL数据库,而使用Delphi连接时,凡是数据库中文内容都显示为“???”问号的乱码。这个问题之前没有... -
Ubuntu的MySQL中文乱码问题
2020-12-14 20:31:00近一段时间学习Django,在进行与MySQL数据联合使用的插入数据的时候遇到下边的问题: /usr/local/lib/python2.7/dist-packages/Django-1.11.dev20170117002028-py2.7.egg/django/db/backends/mysql/base.py:109: ... -
JDBC 连接 MySQL 中文乱码问题
2019-04-07 13:02:59JDBC 连接 MySQL 中文乱码问题 前言 最近在写小项目,用到了上个月刚学的mysql和 JDBC,在java查询时出现了中文乱码,在网络上查询资料,发现相关问题比较混乱,故整理一下解决方法。 原因 字符集不匹配 运行环境 ... -
解决MySQL中文乱码以及版本不一致问题
2021-01-21 14:38:26先说明一下自己的环境:Mac OS X 10.8.3,MySQL Community Server 5.6.10,MySQL Workbench 5.2.47。 我想把本机数据库内的数据迁移到另一台机器上,于是使用Workbench中自带的import/export功能,其实是调用... -
解决SSH连接mysql中文乱码问题
2021-01-20 02:19:501.Jsp页面的编码格式要是UTF-8.2.数据库的字符编码格式UTF-8.3.在WEB.XML文件中添加过滤器,参考代码如下:encodingFilterorg.springframework.web.filter....在连接数据库时指定编码格式:"jdbc:mysql://localhost:... -
如何解决mysql insert乱码的问题
2020-12-14 05:56:37在mysql中插入中文乱码,或mysql中中文正常显示,但jsp在前台显示mysql中的中文时乱码。 解决方法: 进入mysql控制台,执行下面的命令即可: SET character_set_client='utf8'; SET character_set_connection='utf8... -
php mysql 汉字乱码怎么办
2021-04-28 08:43:16php mysql汉字乱码的解决办法:首先查看Apache目录下的PHP源文件,并将其改为utf8格式;...php写入mysql中文乱码的实例解决方法php写入mysql出现中文乱码的解决办法是:在建立数据库连接之后,将该连接的编... -
Mysql中文乱码问题的解决办法
2022-02-23 11:24:00在进行数据库连接的时候,发现代码插入不了中文,在此将中文乱码问题做一个简单的总结。 一:将IDEA中的文件设置为UTF-8编码方式 将File => Settings => Editor => File Encodings => Project Encoding... -
mysql中文乱码解决方式
2021-01-28 00:35:25却突然出现了中文乱码问题。尝试了多种方案,最终解决乱码问题,总结一下解决方式,给遇到同样问题的人一点參考。中文乱码的原因1.安装mysqlserver的时候编码集设定有问题2.创建数据库的时候编码集设定有问题3.创建... -
Mysql中文乱码解决方案
2021-03-04 00:09:49Mysql中文乱码解决方案时间:2017-07-11来源:华清远见JAVA学院中文乱码问题一直是我们编程过程中比较常见又让人头疼的问题,但是只要按照标准进行配置,就能很好的避免出现中文乱码问题,今天小编就和大家分享下... -
mysql odbc字符集设置(中文显示乱码)
2021-01-21 14:42:19在配置odbc源时,选上Read Options From my.cnf这一项 MySQL ODBC字符集设置 mysql数据库字符集为utf8,使用delphi7的adoquery查询出的结果显示乱码 odbc驱动版本3.51.15 处理如下: ---------------... -
解决MYSQL中文乱码问题
2022-02-16 22:12:17一、乱码的原因: 1、 client客户端的编码不是utf8 2、server端的编码不是utf8 3、database数据库的编码不是utf8 4、数据库的表的编码不是utf8 5、表中的列字段编码不是utf8 主要的原因在于前三个偏多。 二、查看... -
Mysql 中文乱码 最简单的解决办法
2019-07-27 02:56:22NULL 博文链接:https://java-xb.iteye.com/blog/740776 -
PHP彻底解决mysql中文乱码
2021-04-27 04:27:04彻底解决mysql中文乱码mysql是我们项目中非经常常使用的数据型数据库。可是由于我们须要在数据库保存中文字符,所以经常遇到数据库乱码情况。以下就来介绍一下怎样彻底解决数据库中文乱码情况。数据库执行SHOW ...