linux mysql中文乱码

linux mysql中文乱码

 

设置如下:

然后重新查看结果:

 

完整配置:

 

mysql默认的字符编码是latin1,而我用的是utf-8,存入数据库就变成了?????这样的乱码,解决方法:

1windows:修改my.ini文件,有两处default-character-set=latin1都改为default-character-set=utf8重启既可。

2linux下:

使用find命令查找cnf文件。记得不要去找my.cnf因为它不一定存在,而应该找*.cnf

[root@linuxserver classes] find / -iname *.cnf -print

/usr/share/doc/mysql-server-4.1.12/my-medium.cnf

/usr/share/doc/mysql-server-4.1.12/my-huge.cnf

/usr/share/doc/mysql-server-4.1.12/my-innodb-heavy-4G.cnf

/usr/share/doc/mysql-server-4.1.12/my-large.cnf

/usr/share/doc/mysql-server-4.1.12/my-small.cnf

/usr/share/texmf/web2c/mktex.cnf

/usr/share/texmf/web2c/texmf.cnf

/usr/share/texmf/web2c/fmtutil.cnf

/usr/share/texmf/tex/jadetex/jadefmtutil.cnf

/usr/share/ssl/openssl.cnf

 

找到之后,复制一个出来

 cp /usr/share/doc/mysql-server-4.1.12/my-large.cnf  /etc/my.cnf

2. 打开my.cnf修改编码

 vi /etc/my.cnf

按键盘i键进行编辑

[mysqld]下添加

default-character-set=utf8

 

或者 default-character-set=gbk

 

[client]下添加

default-character-set=utf8

 

或者 default-character-set=gbk

编辑完后按ESC退出编辑,然后输入

:wq保存退出

也可直接在mysql>输入

mysql> SET character_set_client = x;

mysql> SET character_set_results = x;

mysql> SET character_set_connection = x;

x为要设置的字符集,如utf8

# show variables like '%char%';# show variables like '%collation_%';

查看字符集,会显示各项字符集。重新设置后的数据库不能使用,因为中文一样会是乱码,不知道为什么,重建一个数据库,重启服务器。

 

url中文字符乱码问题:

修改tomcatserver.xml文件

<Connector acceptCount="100"

           connectionTimeout="20000"

           disableUploadTimeout="true"

           port="8080"

           redirectPort="8443"

           maxSpareThreads="75"

           maxThreads="150"

           minSpareThreads="25"

          URIEncoding="UTF-8">

</Connector>

配上过滤器就OK

 

 

 

 

 

 

 

 

 

 

 

linux下如何导入导出MySQL数据库

 

 一、导出:

mysqldump命令行

命令格式

mysqldump -u 用户名 -p数据库名 >数据库名.sql

范例:

mysqldump -u root -p abc > abc.sql

(导出数据库abcabc.sql文档)

提示输入密码时,输入该数据库用户名的密码。

 

二、导入:

mysql命令行

命令格式

mysql -u 用户名 -p数据库名

 

 

 

三、直接COPY

假如数据库比较大,能够考虑用直接拷贝的方法,但不同版本和操作系统之间可能不兼容,要慎用。

3.1 将原始数据库用tar打包为一个文档

tar -zcvf mydb.tar.gz mydb

3.2 创建空数据库

3.3 解压

在临时目录中解压,如:

cd /tmp

tar -zxvf mydb.tar.gz

3.4 拷贝

将解压后的数据库文档拷贝到相关目录

cd mydb/

cp * /var/lib/mysql/mydb/

对于FreeBSD:

cp * /var/db/mysql/mydb/

3.5 权限配置

将拷贝过去的文档的属主改为mysql:mysql,权限改为660

chown mysql:mysql /var/lib/mysql/mydb/*

chmod 660 /var/lib/mysql/mydb/*

 

 

 

四、linux mysql 配置文件更改

 

 

 

Linux MYSQL命令更新了很多版本更新,我本人认为Linux MYSQL命令很好使的文件系统,在此向大家推荐。如今技术不断更新,各种使用文件都已经淘汰。我认为还是有很不错的如Linux MYSQL命令值得大家来运用。今天在配置cacti时,发现只要增加spine的进程数,就会出错,从log中看到:SPINE: Poller[0] FATAL: Connection Failed, Error:'1040', Message:'Too many connections' (Spine thread)

 

查了下,应该是默认连接太少,网上搜了下,这样改:Linux MYSQL命令数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,增加默认Linux MYSQL连接数的方法有两个

 

方法一:进入MYSQL安装目录打开Linux MYSQL命令配置文件 my.ini my.cnf查找 max_connections=100  修改为 max_connections=1000服务里重起MYSQL即可

 

方法二:Linux MYSQL命令的最大连接数默认是100客户端登录:mysql -uusername -ppassword设置新的最大连接数为200mysql> set GLOBAL max_connections=200显示当前运行的Querymysql> show processlist显示当前状态:mysql> show status退出客户端:mysql> exit查看当前最大连接数:mysqladmin -uusername -ppassword variables

 

 

 

 

 

 

在程序开发中,有时会被字符乱码的问题所困扰。对此,必须理解 MySQL 的字符集编码设置的原理:在MySQL中,默认使用的是lartin1,也就是ISO8859-1字符集编码。这是一种8位的编码,适用于所有西欧字符。而对于汉字等是不合适的。最好、最通用的编码格式是utf-8,UTF-8(8 位元 Universal Character Set/Unicode Transformation Format)是一种针对Unicode 的可变长度字节编码的Unicode字符集。它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。所以对于8位的西欧字符集来说,更能比较节省空间,而又能够有效地表示汉字等字符。 MySQL服务器对字符集和校对规则有4个级别的默认设置:服务器级、数据库级、表级和连接级。

一、MySQL默认字符集
MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。但是,传统的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置:
(1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;
(2)安装MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;
(3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集;
(4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server;
(5)当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;
(6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;
(7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;
总结:如果什么地方都不修改,那么所有的数据库的所有表的所有栏的都用 latin1 存储,不过我们如果安装 MySQL,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把 default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏的都用 UTF-8 存储。

二、查看默认字符集
查看系统的字符集和校对的设定可以通过下面的两条命令:
1. mysql> SHOW VARIABLES LIKE 'character%';
2. mysql> SHOW VARIABLES LIKE 'collation_%';

三、修改默认字符集
(1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,
如:default-character-set = utf8
character_set_server = utf8
修改完后,重启mysql的服务,service mysql restart
(2) 还有一种修改字符集的方法,就是使用mysql的命令,如:
mysql> SET character_set_client = utf8 ;
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;
mysql> SET collation_connection = utf8 ;
mysql> SET collation_database = utf8 ;
mysql> SET collation_server = utf8 ;
有时设置了表的默认字符集为utf8并且通过UTF-8编码发送查询,你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。解决方法是在发送查询前执行一下下面这句:
SET NAMES 'utf8'; SET NAMES显示客户端发送的SQL语句中使用什么字符集。因此,SET NAMES 'utf8' 语句告诉服务器“将来从这个客户端传来的信息采用字符集'utf8'。它还为服务器发送回客户端的结果指定了字符集。
它相当于下面的三句指令:
mysql> SET character_set_client = utf8;
mysql> SET character_set_results = utf8;
mysql> SET character_set_connection = utf8;

新建数据库时指定库的编码:
create database dbName DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

新建数据表时指定表的编码:
create table tableName (uid smallint(5) unsigned NOT NULL auto_increment,username char(50) NOT NULL default '',PRIMARY KEY(uid))TYPE=MyISAM DEFAULT CHARSET=utf8;


另 AJAX 提交中文出现乱码问题 见另一文章:

http://blog.csdn.net/ctowoo/archive/2009/09/26/4596396.aspx

 

 

 

 最近用MYSQL数据库的时候不知道怎么回事,通过SQLEXPLORER插件写进去的中文内容是问号。就从网上搜点资料看了下。其实他就是字符集的问题。
下面介绍下几个MYSQL命令:
     1.show character set;或show char set;
      查看数据库支持的所有字符集
     2.status;或\s;
      查看当前状态 里面包括当然的字符集设置
     3.show variables like 'char%';
      查看系统字符集设置,包括所有的字符集设置
     4.show table status from sqlstudy like '%countries%';
      查看sqlstudy数据库中表的字符集设置
     5.show full columns from countries;
      查看表列的字符集设置,关键是在同一个表中,每列可以设置成不同的字符集
知道怎么查看字符集了,下面我来说下如何设置这些字符集(当然全是我这几天从网上整理的,呵呵)
     1.修改服务器级
         a. 临时更改:
             mysql>SET GLOBAL character_set_server=utf8;
        b. 永久更改:
             修改my.ini文件
           [mysqld]
           default-character-set=utf8
    2.修改数据库级
          a. 临时更改:
              mysql>SET GLOBAL character_set_database=utf8;
         b. 永久更改:
              改了服务器级就可以了
     3.修改表级
          mysql>ALTER TABLE table_name DEFAULT CHARSET utf8;
         更改了后永久生效
     4.修改列级
           修改示例:
          mysql>alter
table `products` change `products_model` `products_model` varchar( 20 )
         character set  utf8 collate utf8_general_ci null default null;
         更改了后永久生效
      5.更改连接字符集
           a. 临时更改:
               mysql> set names utf8;
          b. 永久更改:
               修改my.ini文件
             在[client]中增加:
               default-character-set=utf8
执行SQL语句时信息的路径是这样的
信息输入路径:client→connection→server;
信息输出路径:server→connection→results.
这里有篇文章写的还算可以
http://www.phpchina.com/viewthread_13861.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值