mysql中文显示乱码或者问号是因为选用的编码不对或者编码不一致造成的,最简单的方法就是修改mysql的配置文件my.cnf。在[mydqld]和[client]段加入
default-character-set=utf8
(有的版本不支持default-character-set=utf8,用character_set_server=utf8来取代 default-character-set=utf8即可)
注:如果没有[client]就手工加入[client]段
( 5.0以上版本修改方法:
修改/etc/mysql/my.cnf 中的设置,
在[client]节点下添加
default-character-set=utf8
在[mysqld]节点下添加
character-set-server=utf8
collation-server=utf8_general_ci
)
然后重启mysql即可
附关闭启动命令:(
[root@sg211 mysql-cluster]# bin/mysqladmin -u root -p shutdown;
[root@sg211 mysql-cluster]# bin/mysqld_safe --defaults-file=/opt/mysql-cluster/etc/my.cnf --basedir=/opt/mysql-cluster --datadir=/opt/mysql-cluster/data --user=mysql &
)
这时可以验证下是否生效
mysql> show variables like 'char%';
+--------------------------+------------------------------------------+
| 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 | /opt/mysql-cluster/share/mysql/charsets/ |
+--------------------------+------------------------------------------+
8 rows in set (0.00 sec)
可以 看出都已经更正为utf8了,这样新建立的数据库缺省就是UTF8编码了。
那么已经创建好的数据库及库中的表要如何更改为utf8呢?
用alter语句(修改数据库的字符集不会改变原有数据表的字符集)
utf8:
ALTER DATABASE `数据库` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
ALTER TABLE `数据表` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
gbk (包含gb2312):
ALTER DATABASE `数据库` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci
ALTER TABLE `数据表` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci
相关推荐
然而,这种方法可能会对整个数据库连接的后续操作产生影响,因此在插入完中文数据后,别忘了恢复到原来的字符集,以避免其他非中文数据的乱码问题。 **方法二:在连接字符串中指定字符集** 更常见且推荐的做法是在...
在Linux环境下向MySQL数据库插入数据时遇到中文乱码问题,通常是由于字符编码不匹配导致的。MySQL数据库系统默认可能使用的是UTF-8编码,而你的应用程序或者数据源可能使用了不同的编码方式,如GBK等。这就会导致在...
MySql 数据库导入乱码解决方案 在使用 PHPmyadmin 导出 MySql 数据库时,经常会遇到中文乱码的...通过遵循这些步骤,我们可以轻松地解决 MySql 数据库导入中文乱码的问题,并确保我们的数据库数据正确地导出和导入。
综上所述,解决MySQL插入中文数据变为全问号的问题主要涉及调整服务器、数据库、表以及客户端的字符集设置。通过以上步骤,你应该能够成功地存储和显示中文字符,避免出现乱码现象。如果你在操作过程中遇到任何问题...
在使用JDBC连接MySQL进行数据插入时,遇到插入的数据在查询后显示问号的问题,通常是由于字符编码不一致导致的。以下将详细解释这个问题的原因以及相应的解决方法。 1. **原因分析**: - **MySQL服务器编码问题**...
本文主要针对的是一个具体的问题:“解决Linux下Tomcat向MySQL插入数据时出现的中文乱码问题”。这个问题通常涉及了多个层面,包括操作系统环境、服务器配置、Web框架以及数据库设置。 首先,问题的背景是在Windows...
如果用户确认数据在插入时是正常的,但在更新后变为乱码,那么可能是更新操作过程中出现了问题。这可以通过分析MySQL的binlog日志来追踪。在binlog中找到引起问题的UPDATE语句,检查其是否使用了错误的字符集,比如...
在使用MySQL数据库时,用户可能会遇到数据插入过程中出现问号(?)的情况,这通常意味着数据的编码格式存在问题。对于中文字符来讲,由于字符编码不兼容或者设置不正确导致的乱码问题尤其突出。为了确保中文等字符...
### Web开发中的编码设置——解决中文乱码问题 在Web开发过程中,中文乱码问题是开发者经常会遇到的一个难题。本文将详细介绍如何在MySQL、Servlet以及JSP等不同层面进行编码设置,确保中文字符能够正常显示与处理...
在使用MySQL进行数据库管理时,有时我们可能会遇到在命令行导入SQL脚本时,中文字符显示为乱码或问号的问题。这个问题主要涉及到字符编码设置不一致,导致数据导入过程中出现编码转换错误。本文将详细解释这个问题的...
乱码问题通常是由于字符集设置不正确造成的,它会在网页上显示出一堆问号(??????),这在中文环境下特别常见,因为中文字符需要更多的字节进行编码。此问题往往发生在数据库中存储的是UTF-8编码的数据,但在读取...
例如,向默认字符集为`utf8`的表插入`utf8`数据时,如果没有设置连接字符集,数据可能会被错误地转换成`latin1`,导致每个汉字占用6个字节,查询时产生乱码。相反,如果向`latin1`表插入`utf8`数据并设置了连接字符...
在学习如何使用PHP将CSV文件导入MySQL数据库的过程中,我们会涉及到一系列的技术知识点,包括文件上传、文件读取、数据库连接和数据插入等。以下是一些重要的知识点,对于想要掌握该技术的朋友来说是不可多得的参考...
例如,向latin1字符集的表插入utf8数据,未正确设置连接字符集,会导致每个汉字由3字节变为6字节存储,查询时返回乱码。反之,向utf8表插入latin1数据,可能丢失无法表示的Unicode字符,转换为问号。 检测字符集...
其次,插入数据时,特别是当数据来自用户输入时,应特别注意防止SQL注入攻击。使用`prepare`和`execute`方法预编译SQL语句,并用占位符(如问号`?`)替代动态内容,可以有效地防止这类安全问题。例如: ```perl my ...
如果一个`VARCHAR`字段被定义为`VARCHAR(50)`,并且尝试存储一个超过33个汉字的字符串,就会出现截断或者乱码问题,就像例子中所示的那样。 在例子中,当尝试更新`saleUserName`字段(类型为`VARCHAR(50)`)为包含...