linux mysql中文乱码
设置如下:
然后重新查看结果:
完整配置:
mysql默认的字符编码是latin1,而我用的是utf-8,存入数据库就变成了?????这样的乱码,解决方法:
1、windows下:修改my.ini文件,有两处default-character-set=latin1都改为default-character-set=utf8重启既可。
2、linux下:
使用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中文字符乱码问题:
修改tomcat的server.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
(导出数据库abc到abc.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设置新的最大连接数为200:mysql> set GLOBAL max_connections=200显示当前运行的Query:mysql> 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