香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > MYSQL >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

linux下mysql乱码问题的解决方案


时间:2020-11-03 13:39 作者:admin


项目进行到和服务器交互,通过post访问服务器端jsp,jsp访问服务器端mysql/' target='_blank'>mysql数据库,最终返回到客户端的中文出现乱码问题。

在整个流程中,出现错误的原因可能是三个:post未设置编码或者编码不相符合,jdbc出现问题,linux下MySQL初始码制问题。

在经过繁琐的排查后,最终确定问题为mysql编码问题。下文介绍如何解决linux下mysql中文乱码问题。

首先进入mysql命令行模式,键入mysql -uroot -p 即可进入。随后键入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    | /alidata/server/mysql-5.1.73/share/charsets/ |

则已修改正确,而mysql默认初始设置的都是latin1而非utf8。

一种解决方法是更改表格的属性设置为utf8或者在创建表格的时候在最后加上DEFAULT CHARSET=utf8。设置表格为utf8码。这样的方法有可能失效。

最根本的解决方法是打开mysql配置文件修改。linux下mysql配置文件名为my.cnf,目录为/etc/my.cnf,打开后按照以下操作:

--在 [mysqld] 标签下加上三行default-character-set = utf8character_set_server = utf8lower_case_table_names = 1 //表名不区分大小写(此与编码无关)--在 [mysql] 标签下加上一行default-character-set = utf8--在 [mysql.server]标签下加上一行default-character-set = utf8--在 [mysqld_safe]标签下加上一行default-character-set = utf8--在 [client]标签下加上一行default-character-set = utf8

上述标签若未能全部找到也没关系。再次打开mysql命令行,执行SHOW VARIABLES LIKE 'character_set_%';后若仍存在latin1,则在mysql命令行下执行以下命令:

set character_set_client = utf8; set character_set_server = utf8; set character_set_connection = utf8; set character_set_database = utf8; set character_set_results = utf8; set collation_connection = utf8_general_ci; set collation_database = utf8_general_ci; set collation_server = utf8_general_ci;

执行后再执行上述show 命令可得到目标结果。

设置完成后需要重新启动mysql,重启命令/etc/init.d/mysqld restart 。

原数据表需要删除后重建。

最终完成,大功告成。

小结

1、修改/etc/my.cnf文件,增加以下几行:

[client]# pipe=# socket=MYSQLport=3306default-character-set=utf8[mysql]no-beep# default-character-set=default-character-set=utf8# SERVER SECTION# ----------------------------------------------------------------------# The following options will be read by the MySQL Server. Make sure that# you have installed the server correctly (see above) so it reads this # file.# server_type=3[mysqld]character_set_server=utf8

2、重启mysql服务:

service mysql stop;service mysql status;service mysql start;或者 service mysql restart;

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)