mysql5 插入中文乱码问题

latin1即是iso8859-1, 所以在插入之前需要将内容转换为iso8859-1, 如下:

 代码如下 复制代码

Encoding iso88591 = Encoding.GetEncoding("iso8859-1");
Encoding df = Encoding.Default;
 
byte[] gb2312bytes = df.GetBytes(content);
 //byte[] asciiBytes = Encoding.Convert(df, iso88591, gb2312bytes);
tring str = iso88591.GetString(gb2312bytes);

这样转换之后 ,source中不用加入charset参数 ,程序中也不需要先执行set names **, 即可正常插入

如果是mysql服务器我们不知道编码可参考下面方法解决

mysql的字符集是utf8的,光看这点害人不浅。登录linux,mysql -uroot -p,进入mysql。
  命令:SHOW VARIABLES LIKE 'character_set_%';

 代码如下 复制代码
  +--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

只有character_set_system是utf8。
vi /etc/my.cnf
mysql的默认配置文件以及目录
编辑如下:
[mysqld]

 代码如下 复制代码

default-character-set=utf8

 之后:service mysql stop
service mysql start

重启后,再次查看SHOW VARIABLES LIKE 'character_set_%';

 代码如下 复制代码
+--------------------------+----------------------------+
| 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/ |
+--------------------------+----------------------------+

此时,character_set_database已经是utf8,工程已经不再乱码。

 

可以再添加如下一句:

 代码如下 复制代码

[client]

default-character-set=utf8

也可登录的时候, 要用以下命令:mysql --default-character-set=utf8 -u root -p
则:

 代码如下 复制代码
+--------------------------+----------------------------+
| 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/ |

最后如果你是php连接mysql中文乱码可参考下办法解决

就是在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SET NAMES GBK,代码如下:

 代码如下 复制代码

$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
mysql_query("SET NAMES 'GBK'");

时间: 2024-10-22 12:24:03

mysql5 插入中文乱码问题的相关文章

Perl向MySQL插入中文乱码问题解决办法

当使用DBI向MySQL插入中文时,数据库中中文会显示乱码(即使表的编码为utf8),需要在插入语句前读取语句前添加编码设置 先说MySQL的字符集问题.Windows下可通过修改my.ini内的 # CLIENT SECTION [mysql] default-character-set=utf8 # SERVER SECTION [mysqld] default-character-set=utf8 这 两个字段来更改数据库的默认字符集.第一个是客户端默认的字符集,第二个是服务器端默认的字符

Linux下进行MYSQL编程时插入中文乱码的解决方案_php技巧

插入中文是乱码,尝试了许多方法,比如我先把vim里设置为:set fileencoding=utf-8不起作用,后来想想也对,和vim没什么关系 然后就尝试c#代码,用Encoding.UTF8.GetString()方法,后来也不对. 我就郁闷了,忽然想起来莫不是mysql的设置问题??? 于是,sudo nano /etc/mysql/my.cnf 插入下面红色代码,default-character-set = utf8,成功,不乱码了~~~根本不用什么Encoding..... # Th

解决php mysql查询插入中文乱码问题

  一.中文问题其实就是经统一编码了否则就会乱码 1.数据库与php页面编码统一 2.数据库数据表字段与页面编码统一 如果做到上面两种就不存在中文乱码问题了,那么我们来看mysql中文乱码问题解决例子 1.我的mysql表如下 -- -- 表的结构 `useradmin` -- 代码如下   CREATE TABLE IF NOT EXISTS `userain` ( `id` int(4) NOT NULL AUTO_INCREMENT, `username` varchar(20) DEFA

PHP连接远程MYSQL和MYSQL5.1中文乱码处理方法

本文描述了我在开发我的Blog的过程中所遇到的一些问题以及解决他们的方法.因为本网站采用的是一个免费的远程MySql数据库db4free.net,而且这个数据库是5.1的版本,所以在开发过程中出现了许多问题.故在此发表,以便大家参考. 一.连接远程数据库的方法 对于PHP连接远程MySql数据库,通常要使用如下的语句: 以下为引用的内容:    var $serverName     = 'db4free.net:3306';//数据库服务器     var $dbName         =

MySQL5 数据库中文乱码问题的解决方法

   由于Mysql是从版本 4迁移到Version 5的,原来的字符集是latin1,现在是UTF8,这就遇到了经典的乱码问题,即使通过phpadmin来访问,也是一片纷乱,还好在前端的展现正常. 在网上搜一下,很多帖子和方法,最后我通过如下步骤,终于纠正了多年来的乱码问题. 首先乱码是由于字符集的变化和混乱造成的. [root@localhost plugins]# /mysql -hlocalhost -ueygle -p eygle Enter password: Reading tab

PHP+MySQL5.0中文乱码解决方法_php技巧

最近学习Apache2+PHP4.4.1+MySQL5.0,页面显示中文全为"???.....",在网上找了好多资料,简单解决! 数据库连接的PHP脚本内容: config.inc.php <?php //配置mysql数据库连接参数 $db = mysql_connect("localhost", "user","password"); mysql_select_db("message",$db);

MySQL插入中文不乱码的5种方法_Mysql

方法一: 登录MySQL,先做 set names latin1 ,然后在更新语句或者执行SQL语句 mysql> set names latin1; mysql> source test.sql; 方法二:在SQL文件中指定set names latin1;然后登录MySQL,执行相应文件 [root@localhost ~]# cat test.sql set names latin1; insert *****************; mysql> source test.sql

编码-php插入到mysql数据库中文乱码,数据库中的中文可以正常显示

问题描述 php插入到mysql数据库中文乱码,数据库中的中文可以正常显示 PHP获取HTML的POST内容到数据库,插入以后显示乱码,我数据库编码已经设置成UTF8了,然后插入之前我ECHO出来也不是乱码,但是到数据库里面就成乱码了,不知道为什么呢,问之前我已经搜索过了,说要先执行 mysql_query("SET NAMES 'uft8'",$link); 这样,我这样执行以后然后刷新还是一样 解决方案 http://www.111cn.net/phper/31/59059.htm

ASP 调用 MySQL 5.1 中文乱码

前一段有个小程序用 MySQL 数据库,在中文乱码这块弄了办天越弄越乱,结果就放下啦.这两天有空想在研究研究,结果还弄对啦,呵呵. 以前的步骤装完 MySQL 后,进行配置时选 MySQL Server Instance Config Wizard -> detail option 当时选的编码为 gb2312, 不知道为什么到哪都出乱码. 这次换了个步骤: 1. 装 MySQL 5.1,没有进行 MySQL Server Instance Config Wizard 配置,选用 stand o