mycat程序写入和读取中文乱码解决
中文字符乱码问题的解决方法
中⽂字符乱码问题的解决⽅法Jsp+servlet+tomcat6.0+ibatis+mysql5.0框架,中⽂字符乱码问题的解决总结⾸先总结我的项⽬字符集设置:1、jsp、servlet字符集要统⼀,如果要⽤gbk就都⽤gbk。
或者都⽤utf-8。
我都统⼀⽤得是utf-8;(我在servlet中分别对request和response进⾏了字符集设置,并且还应⽤new String(S.getBypes(ISO-8859-1),"UTF-8" ) 由于他和request的设置的作⽤是相同的,所以我得到还是乱码,由此可以看出不是吧所有的字符集设置都加上就是正确的)2、在未插⼊数据库之前⼀定要确认servlet在jsp页⾯获得的是否为中⽂。
3、Ibatis 在连接mysql的时候 url ⾥⾯加的characterEncoding 的值要和mysql的字符集⼀制。
4、为解决中⽂问题,mysql我⽤的gbk。
5、Mysql5.0 的驱动也很重要,驱动要和mysql的版本⼀致,要不然也会出问题,这个是出现中⽂字符乱码的原因之⼀。
6、Tomcat 字符集的设置,修改 D:\Tomcat 6.0\conf\server.xml<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="9443" URIEncoding='GBK' />增加对GET⽅法获取数据时的编码设置参数 URIEncoding='GBK',(设置tomcat对我项⽬影响不⼤,我刚才测试了⼀下,如果不设置也正常运⾏,设置这项对于⽤get⽅法获取参数是有作⽤)7、我在⽹上查了好多的资料好多⼈都说mysql和jsp、servlet 最好统⼀字符,确实统⼀字符会少很多⿇烦,由于我的mysql设置成utf-8就有问题,所以我就设置成gbk的了!按照⽹上说的更改my.ini ⽂件结合设置语句,都统⼀成下⾯这样了8、其实遇到中⽂乱码问题的⼈很多,主要原因就是没有弄清jsp、servlet、mysql之间字符集是怎么转换的,个⼈认为应该先从理论上理解,⾃⼰在做⼀些测试,如果还是有问题,就要⼀步⼀步的测试,中⽂问题也就容易解决了!针对字符集的问题我查阅了很多资料,下⾯整体进⾏总结⼀下:下⾯对于字符集的设置在jsp、servlet、mysql、tomcat中的作⽤⾸先要清楚⼏个名词解释及其作⽤1. contentType: <%@ page contentType=”text/html; charset=UTF-8″%>2. pageEncoding:<%@ page pageEncoding=”UTF-8″%>3. html页⾯charset:<META http-equiv=”Content-Type” content=”text/html; charset=UTF-8″>4. setCharacterEncoding:request.setCharacterEncoding(),response.setCharacterEncoding()5. setContentType:response.setContentType()6. jsp页⾯编码: jsp⽂件本⾝的编码7. web页⾯显⽰编码:jsp的输出流在浏览器中显⽰的编码8. web页⾯输⼊编码: 输⼊框输⼊的字体编码9. web服务器输⼊的请求流: web Server相应浏览器的请求数据10. web服务器输出的响应流: web Server相应浏览器的输出数据1、JSP/Servlet中的⼏个字符编码的作⽤在JSP/Servlet中主要有以下⼏个地⽅可以设置编码,pageEncoding="UTF-8"、contentType="text/html;charset=UTF-8"、request.setCharacterEncoding("UTF-8")和response.setCharacterEncoding("UTF-8"),其中前两个只能⽤于JSP中,⽽后两个可以⽤于JSP和Servlet中。
mycat程序写入和读取中文乱码解决
程序写入myc at中文乱码解决乱码问题可能出现的三个地方1.程序连接的编码要设置jdbc:mysql://192.168.1.1:8066/TESTDB?u seUnic ode=true&charact erEncoding=utf82.mysql数据库的编码要设置1)查看mysql server级别的编码集首先进入mys ql使用命令mysql -uroot –p然后执行命令查看:show variabl es like 'charact er%+--------------------------+----------------------------+| Variabl e_name| V alue |+--------------------------+----------------------------+| charact er_set_clien t | latin1|| charact er_set_conne ction| latin1|| charact er_set_datab ase | utf8 || charact er_set_files ystem| binary|| charact er_set_resul ts | NULL || charact er_set_serve r | latin1|| charact er_set_syste m | utf8 || charact er_set s_dir | /usr/share/mysql/charset s/ |+--------------------------+----------------------------+编辑/etc/mysql/my.cf文件在[client]下添加default-charact er-set=utf8在[mysqld]下添加charact er_set_serve r=utf8注:[mysqld]处也可使用de fault-charact er-set=utf8,如果启动mys ql服务出错的话,就使用char acter_set_se rver=utf8。
MySQL中的字符编码转换和乱码处理技巧
MySQL中的字符编码转换和乱码处理技巧在数据库应用开发中,字符编码是一个非常重要的问题。
特别是在涉及跨国界的应用中,由于不同国家和地区使用不同的字符编码规范,很容易出现乱码问题。
MySQL作为一个广泛使用的关系型数据库,提供了多种字符编码转换和乱码处理的技巧,本文将重点介绍这方面的知识。
一、字符编码的基础知识1.1 字符编码的概念字符编码是一种将字符转换为计算机可识别的二进制编码的方法。
不同的字符编码规范使用不同的编码方式,如ASCII、UTF-8、GB2312等。
字符编码的选择直接影响到字符串在存储和传输时的正确性和效率。
1.2 常见的字符编码规范- ASCII(American Standard Code for Information Interchange,美国信息交换标准代码):最早的字符编码规范,使用7位二进制编码表示128个字符,包括26个英文字母、数字、标点符号等。
- UTF-8(Universal Character Set Transformation Format,通用字符集转换格式):一种可变长度的Unicode字符编码规范,兼容ASCII字符编码。
在UTF-8编码中,一个ASCII字符占用一个字节(8位),而一个非ASCII字符占用2至4个字节不等。
- GB2312(Guo Biao,国标):中文字符编码规范,使用两个字节表示一个中文字符,包括6763个汉字和682个字符。
- UTF-16(16-bit Unicode Transformation Format,16位Unicode转换格式):一种较为简单的Unicode字符编码规范,使用16位二进制编码表示字符。
对于英文字母和数字等ASCII字符,UTF-16和ASCII编码是一样的,都使用8位二进制编码表示。
二、MySQL中的字符集和字符编码MySQL数据库中的字符集和字符编码是与存储和处理字符数据密切相关的概念,正确的字符集和字符编码设置可以避免数据库中的乱码问题。
中文乱码解码
中文乱码解码
中文乱码通常是由于编码格式不一致或者编码格式错误导致的。
解决方法如下:
1. 确认编码格式:可以通过查看文件头部信息或者使用专业的编码格式检测工具来确认编码格式。
2. 转换编码格式:如果确认编码格式错误,可以使用专业的编码格式转换工具将文件转换为正确的编码格式。
3. 修改文本编辑器编码格式:如果是在文本编辑器中出现乱码,可以尝试修改文本编辑器的编码格式,将其设置为正确的编码格式。
4. 使用专业的解码工具:如果以上方法都无法解决问题,可以尝试使用专业的解码工具来解决乱码问题。
总之,解决中文乱码问题需要根据具体情况采取不同的方法,建议在处理前备份文件,以免数据丢失。
Mysql常见中文乱码及解决方案
Mysql常见中⽂乱码及解决⽅案
在Mysql中会经常碰到中⽂乱码问题,与oracle相⽐,不但库拥有字符集,连表,或字段都拥有⾃⼰的字符集
导致我们在查询,新增记录时出现各种各样的乱码,或者是⾃⼰的终端上没有问题,在其它终端连接就会出现问题。
常见乱码分析:
1,登录⽅式,导致的中⽂乱码:
2,操作系统语⾔集:
$ cat /etc/sysconfig/i18n
显⽰UTF-8格式,也可以使⽤:
$ echo $LANG
可以使⽤ export LANG=C 进⾏修改。
但是重新登录后,乱码依然:
3,⽂件格式导致的中⽂乱码:
此时,在执⾏SQL脚本时就会报错:
这个解决⽅案,是将⽂件修改成utf-8格式,或者在VI中修改:
:set fileencoding=utf-8
在MYSQL中,⼀个汉字占3个字节,如何避免乱码:
1,编辑⽂件时,指定与数据库相同字符集,⽐如gbk
2,在初始化数据库时,对库的字符集,表,以及字段进⾏统⼀编码设置,⽐如gbk
3,在代码中,指定字符集:
mysql_set_character_set(mysql, "utf8");
或者执⾏:
mysql_query('SET NAMES UTF8')。
访问MySQL数据库时中文乱码问题分析及解决
访问MySQL数据库时中文乱码问题分析及解决使用MySQL保存中文数据时,经常会遇到乱码问题。
产生乱码的原因很多,在笔者以为对MySQL的字符集处理已经很有了解的时候,使用C#编程时,竟再一次遇到了乱码。
联想到前几天一位同事在使用JDBC访问MySQL时遇到的中文乱码问题,决定对MySQL中文乱码问题的产生场景进行一次总结。
一、错误读出现象:一个已经存在数据的MySQL数据库,该数据库的数据用系统中其它软件、网页查看均正常,使用MySQLcc之类的客户端查看也正常,可是在新写的网页中总是显示乱码。
分析:其它系统都可以正常查看数据,说明数据本身是没有问题的。
在网页中显示乱码,一定是网页的编码字符集和获取到的数据的编码字符集不一至。
比如数据库的字符集是UTF 8的,而网页的字符集是gb2312的,那么网页就会把UTF8编码的字体串当作gb2312的来处理,结果产生乱码。
解决办法:在连接数据库时,设定连接字符集,使连接字符集和当前网页或客户端程序使用的字符集一致。
可以使用MySQL的Set Names指令设定连接字符集。
假设网页的字体集为gb2312。
在连接MySQL后,在连接上执行如下SQL语句:Set Names ‘gb2312’在以后所有这个连接上的查询,MySQL都会自动把数据库中的数据转换成gb2312编码格式传过来。
mysqli_query($db,"SET NAMES 'gb2312'")二、错误写入现象:一个网页或程序向一个MySQL数据库中写数据,写完后,这个网页或程序自己可以正常读取数据,而从其它客户端或网页中读取数据都是乱码。
分析:其它的正常的客户端出现乱码,说明数据库中的字符编码不对。
写数据的那个网页能正常读取,是因为写和读都用了错误的编码格式,将错就错,反而能读出正确的数据了。
比如数据库中设定的字符集为UTF8,而网页使用gb2312编码执行了插入数据的SQL,那么MySQL就会把这些gb2312的编码当成是UTF8的编码写进数据库。
mysql彻底解决输入和显示中文字段乱码问题
1、mysql中文乱码问题有两个,第一个是客户端的中文输入乱码问题,第二个是在黑窗口显示结果时乱码。
第一个问题需要设置客户端client和连接connection的编码为:GBK;
第二个问题需要设置结果显示results的编码为:GBK;
先查询现在的编码:
然后修改编码:
但是这样的改变是动态的,也就是当下一次性的,如果下次重启了数据库,其编码有会恢复为原来的样子了。
----------------------------------------彻底解决中文乱码问题------------------------------------------------------------
1、先得找到 .ini 数据库配置文件。
在Mysql 5.5版本以下的旧版本,.ini 文件可以直接在Mysql的安装目录中找到。
在Mysql 5.5及以上的新版本,.ini 文件就需要在C:\ProgramData\MySQL\MySQL Server 5.5中才能找到!
但C盘下的ProgramData目录是隐藏的,所以先选择显示隐藏项目:
修改.ini 文件中的[mysql] 下面的default-character-set = gbk
这种修改方法是静态的,不管是否重启,都有效。
NavicatMySql中文乱码问题
4.更改表与表字段字符编码方式
5.重启数据库
navicat mysql中文乱码问题 navicat数据库中文乱码问题 1.右键连接属性-->高级-->encoding-->936(simplified chinese gbk) 去掉user mysql character set选项 2.数据库安装目录 my.init更改default-character-set=utf8 3.打开mysql client,进入后再输入show variables like "%char%";可查看更改字符集后的列表. | 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 | c:\program files\mysql\mysql server 5.1\share\chars 更改 set names utf8; 更改其中某一个 set @@character_set_database=utf8 set @@character_set_server=utf8 set @@character_set_results=utf8 set @@character_set_connection=utf8 set @@character_set_client=utf8 4.更改表与表字段字符编码方式 5.重启数据库
【IT专家】mysql tomcat java 乱码问题 总结解决中文数据库乱码或者页面显示乱码问题
本文由我司收集整编,推荐下载,如有疑问,请与我司联系mysql tomcat java 乱码问题总结解决中文数据库乱码或者页面显示乱码问题0、my.ini character-set-server=utf8 1、在页面最上面加上: %@page pageEncoding=“UTF-8” contentType=“text/html; charset=UTF-8” % 2、配置数据库连接的时候 jdbc.mysql.url=jdbc:mysql://localhost:3306/db?useUnicode=true characterEncoding=utf8 allowMultiQueries=true 3、项目web.xml中配置 filter filter-name CharacterFilter /filter-name filter-class org.springframework.web.filter.CharacterEncodingFilter /filter-class init-param param-name encoding /param-name param-value UTF-8 /param-value /init-param /filter filter-mapping filter-name CharacterFilter /filter-name url-pattern /* /url-pattern /filter-mapping 4、tomcat容器中 Connector port=“8089” protocol=“HTTP/1.1” connectionTimeout=“20000” redirectPort=“8443” URIEncoding=“UTF-8” / 5、1-4都是正常的解决思路,基本能解决,但是遇到1-4都无法解决时,继续排查: 因为单独在数据库中插入可以正常显示;数据库中正常的内容在页面显示也没有问题;通过在控制台输入sql语句发现,执行sql语句时都是一切正常的。
MySQL中的字符集转换与乱码问题解决方法
MySQL中的字符集转换与乱码问题解决方法在使用MySQL数据库时,我们经常会遇到字符集转换和乱码的问题。
正确地处理字符集转换和乱码是确保数据库存储和检索数据的关键。
本文将探讨MySQL 中的字符集转换与乱码问题,并提供解决方法。
一、字符集与编码首先,我们需要了解字符集和编码的概念。
字符集是一组字符的集合,而编码则是将字符集中的字符映射到二进制数据的规则。
常见的字符集有ASCII、Unicode和UTF-8等,而编码方式有UTF-8、GBK、Latin1等。
在MySQL中,字符集用来定义存储和处理文本数据的规则,而编码则是实际使用的二进制编码。
如果字符集和编码不一致,就会导致数据存储和检索时出现乱码问题。
二、MySQL中的字符集设置在MySQL中,字符集设置是通过修改服务器、数据库、表和列的字符集属性来实现的。
1. 服务器字符集设置在MySQL配置文件(f)中,可以设置服务器的默认字符集和排序规则。
通过编辑f文件,找到[mysqld]节点,在其下方添加如下内容:```shell[mysqld]...character_set_server=utf8mb4collation_server=utf8mb4_unicode_ci...```这样,服务器的默认字符集就被设置为utf8mb4,并且排序规则为utf8mb4_unicode_ci。
2. 数据库字符集设置在MySQL中,每个数据库都有一个特定的字符集和排序规则。
可以通过以下命令创建一个指定字符集的数据库:```sqlCREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATEutf8mb4_unicode_ci;```这样,创建的数据库就拥有utf8mb4字符集和utf8mb4_unicode_ci排序规则。
3. 表和列的字符集设置在创建表时,可以指定表和列的字符集和排序规则。
例如,创建一个使用utf8mb4字符集的表:```sqlCREATE TABLE table_name (col1 VARCHAR(255) CHARACTER SET utf8mb4 COLLATEutf8mb4_unicode_ci,col2 TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci);```这样,表和列的字符集就被设置为utf8mb4,并且排序规则为utf8mb4_unicode_ci。
tomcat引起的控制台中文乱码问题(详解)
tomcat引起的控制台中⽂乱码问题(详解)tomcat引起的两种中⽂乱码问题1.tomcat控制台⽇志乱码2.tomcat控制台页⾯打印输出乱码tomcat引起的两种中⽂乱码问题平时在使⽤tomcat做⼀些服务的时候经常遇到各种乱码问题,要么是控制台输出乱码或者输出⽇志乱码,要么页⾯接收乱码1.tomcat控制台⽇志乱码这个问题的原因是windows默认编码集为GBK,由于使⽤startup.bat启动tomcat时,它会读取catalina.bat的代码并打开⼀个新窗⼝运⾏。
打开的cmd默认编码可能不是utf-8,与系统编码不⼀致,所以导致乱码。
所以tomcat的命令框和输出⽇志都是乱码修改cmd命令⾏的编码 :打开注册表,找到HKEY_CURRENT_USER→Console→Tomcat找到CodePage项,没有则创建,更改值为⼗进制的65001修改logging.properties配置 :打开tomcat/conf/logging.properties添加语句:java.util.logging.ConsoleHandler.encoding = GBK重启tomcat,查看⽇志数据即可2.tomcat控制台页⾯打印输出乱码server.xml配置未注明编码格式 :浏览器本⾝有⾃⼰的显⽰编码格式,tomcat的输出也有⾃⼰的格式,甚⾄我们在编写代码的过程中也可以指定输出的编码格式。
所以这类原因导致的乱码,需要我们保持各种编码格式统⼀:在tomcat中将server.xml 的我们所⽤的端⼝的配置添加URIEncoding=“UTF-8”在html的标签内加上meta标签最好在编程中输出页⾯的时候指定编码为UTF-8catalina.bat的配置问题 :在\tomcat\bin\catalina.bat这个配置⽂件中加上set JAVA_OPTS=-Dfile.encoding=UTF-8编译⼯具 :在IDEA编译器中的tomcat VM options:设置-Dfile.encoding=UTF-8,或eclipse 的设置中改成utf-8 输出的问题可以解决注意事项 :(在tomcat中将server.xml 的我们所⽤的端⼝的配置添加URIEncoding="UTF-8"之后,再把VM options设置好之后,重启tomcat,就可以解决问题了)。
Mycat常见问题与解决方案
Mycat常见问题与解决⽅案转载于:1 Mycat⽬前有哪些功能与特性?答:• ⽀持 SQL 92标准• ⽀持Mysql集群,可以作为Proxy使⽤• ⽀持JDBC连接多数据库• ⽀持NoSQL数据库• ⽀持galera for mysql集群,percona-cluster或者mariadb cluster,提供⾼可⽤性数据分⽚集群• ⾃动故障切换,⾼可⽤性• ⽀持读写分离,⽀持Mysql双主多从,以及⼀主多从的模式• ⽀持全局表,数据⾃动分⽚到多个节点,⽤于⾼效表关联查询• ⽀持独有的基于E-R 关系的分⽚策略,实现了⾼效的表关联查询• ⽀持⼀致性Hash分⽚,有效解决分⽚扩容难题• 多平台⽀持,部署和实施简单• ⽀持Catelet开发,类似数据库存储过程,⽤于跨分⽚复杂SQL的⼈⼯智能编码实现,143⾏Demo完成跨分⽚的两个表的JION查询。
• ⽀持NIO与AIO两种⽹络通信机制,Windows下建议AIO,Linux下⽬前建议NIO• ⽀持Mysql存储过程调⽤• 以插件⽅式⽀持SQL拦截和改写• ⽀持⾃增长主键、⽀持Oracle的Sequence机制2 Mycat除了Mysql还⽀持哪些数据库?答:mongodb、oracle、sqlserver 、hive 、db2 、 postgresql。
3 Mycat⽬前有⽣产案例了么?答:⽬前Mycat初步统计⼤概600家公司使⽤。
4 Mycat稳定性与Cobar如何?答:⽬前Mycat稳定性优于Cobar,⽽且⼀直在更新,Cobar已经停⽌维护,可以放⼼使⽤。
5 Mycat⽀持集群么?答:⽬前Mycat没有实现对多Mycat集群的⽀持,可以暂时使⽤haproxy来做负载,或者统计硬件负载。
6 Mycat多主切换需要⼈⼯处理么?答:Mycat通过⼼跳检测,⾃主切换数据库,保证⾼可⽤性,⽆须⼿动切换。
7 Mycat⽬前有多少⼈开发?答:Mycat⽬前开发全部是志愿者⽆偿⽀持,主要有以leaderus 为⾸的Mycat-Server 开始、以rainbow为⾸的Mycat-web开发、以海王星为⾸的产品发布及代码管理,还有以Marshy为⾸的推⼴。
MySQL中文乱码问题解决方案
查看表的设计表中的字符集 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
这篇文章主要给大家介绍了关于mysql用户账户管理和权限管理的相关资料文中通过示例代码介绍的非常详细对大家的学习或者工作具有一定的参考学习价值需要的朋友们下面随着小编来一起学习学习吧
MySQL中 文 乱 码 问 题 解 决 方 案
1、linux 中 MySQL 出现中文乱码问题如下操作 编辑vi /etc/f 文件,添加图中标记三行
[client] default-character-set=utf8 [mysqld] character-set-server=utf8 [mysql] default-character-set=utf8连接数据库出现中文乱码问题 查看编辑连接中的编码格式
如何解决MySQL中文乱码和字符集问题
如何解决MySQL中文乱码和字符集问题MySQL是一种开源的关系型数据库管理系统,被广泛用于各种业务应用和网站开发中。
然而,在处理中文字符时,MySQL往往会遇到乱码和字符集问题,给使用者带来很多麻烦。
本文将探讨如何解决MySQL中文乱码和字符集问题,并提出一些优化建议。
一、了解字符集和字符编码在解决MySQL中文乱码和字符集问题之前,我们首先需要了解一些基本概念,即字符集(Character Set)和字符编码(Character Encoding)。
字符集是一种规范,用于定义字符的集合和字符的规则。
常见的字符集有ASCII、UTF-8、GBK等。
字符编码是字符集在计算机中存储和传输的方式。
常见的字符编码有ASCII、UTF-8、UTF-16、GB2312等。
二、设置数据库、表和字段的字符集和字符编码解决MySQL中文乱码和字符集问题的第一步是正确设置数据库、表和字段的字符集和字符编码。
1. 设置数据库字符集和字符编码在创建数据库时,可以指定数据库的字符集和字符编码。
例如:CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;这样,数据库的字符集就被设置为utf8mb4,字符编码则是utf8mb4_unicode_ci。
确保数据库的字符集和字符编码与应用程序及其它组件保持一致。
2. 设置表的字符集和字符编码在创建表时,也可以指定表的字符集和字符编码。
例如:CREATE TABLE mytable (id INT,name VARCHAR(30)) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;这样,表的字符集和字符编码与数据库保持一致。
3. 设置字段的字符集和字符编码在创建字段时,可以指定字段的字符集和字符编码。
例如:CREATE TABLE mytable (id INT,name VARCHAR(30) CHARACTER SET utf8mb4 COLLATEutf8mb4_unicode_ci);这样,字段的字符集和字符编码与表保持一致。
乱码问题解决 完全解决MYSQL数据库的乱码问题
一、Web应用中的中文问题:Jsp页面编码:<%@page pageEncoding=“utf-8”%>告诉jsp引擎,在将jsp转成servlet源文件时,该jsp文件的编码是什么。
<%@page contentType=“text/html;charset=utf-8”%>相当于Servlet中的response.setContextType()。
即设置相应头。
浏览器会依据该编码来显示页面,保持jsp文件时,其真正的编码应该与设置的一致。
Html:<meta http-equiv=“Content-Type” content=“text/html;charset=utf-8”>保存html文件时,其真正的编码应该与设置的一致。
Servlet:获取请求参数时:request.setCharacterEncoding("utf-8");如果servlet要直接输出一些信息:response.setContentType("text/html;charset=utf-8");数据库:mysql设置数据库编码:Create database servletdb(数据库名)default character set utf8;如果数据库已经建好了,可以使用:Alter database servletdb(数据库名)default character set utf8;(修改编码)set names gbk;二、工具中修改编码方式:1、改变Eclipse 或者MyEclipse 新建文件的默认编码eclipse 的:window-->preferences-->General-->ContentType 改成utf-8 。
myEclipse 的:window-->preferences-->myEclipse-files and editors-jsp encoding 设成ISO10646/UTF-8.2、eclipse 和java文件编码设定Window-->preferences-->General-->Workspace Text file encoding 改为UTF-8 。
MySQL插入中文数据乱码解决
MySQL插⼊中⽂数据乱码解决问题描述:1、在命令⾏中进⾏插⼊,没有问题。
但是显⽰存在部分乱码2、在JDBC中插⼊成功、中⽂是直接以“??”形式显⽰。
通过Navicat客户端查看与在⽹页中看到的⼀⼀致,说明读取没有问题,问题定位在写⼊数据或存储数据的编码有问题。
解决⽅案:当向 MySQL 数据库插⼊⼀条带有中⽂的数据形如 insert into employee values(null,'张三','female','1995-10-08','2015-11-12','Sales',2000,'是个好员⼯!'); 出现乱码时,使⽤语句 show variables like 'character%'; 来查看当前数据库的相关编码集。
可以看到 MySQL 有六处使⽤了字符集,分别为:client 、connection、database、results、server 、system。
其中与服务器端相关:database、server、system(永远⽆法修改,就是utf-8);与客户端相关:connection、client、results 。
保证每⼀项的编码统⼀就不会产⽣乱码,当然⽀持中⽂的话也可以改成gbk,gb2312,utf-8等,建议是utf-8。
在mysql中默认字符集是latin1,他是不⽀持中⽂的client为客户端使⽤的字符集。
connection为连接数据库的字符集设置类型,如果程序没有指明连接数据库使⽤的字符集类型则按照服务器端默认的字符集设置。
database为数据库服务器中某个库使⽤的字符集设定,如果建库时没有指明,将使⽤服务器安装时指定的字符集设置。
results为数据库给客户端返回时使⽤的字符集设定,如果没有指明,使⽤服务器默认的字符集。
server为服务器安装时指定的默认字符集设定。
MySQL数据库乱码(中文变问号)问题解决
MySQL数据库乱码(中⽂变问号)问题解决
在MySQL的安装⽬录(默认在C:\Program Files\MySQL\MySQL Server 5.x)修改my.ini可以解决。
mysql中⽂显⽰乱码或者问号是因为选⽤的编码不对或者编码不⼀致造成的,我是通过修改my.ini配置⽂件解决了中⽂变问号的问题。
5.7之后没有这个配置⽂件。
在[client]节点下添加 default-character-set=utf8
在[mysqld]节点下添加(注:collation是排序⽅式)
character-set-server=utf8
collation-server=utf8_general_ci
修改完my.ini⽂件后,需要重启MySQL服务,在cmd中输⼊以下命令可以启动或关闭MySQL的服务,也可以在任务管理器--->服务中⼿动关闭或开启。
关闭服务 net stop mysql
开启服务 net start mysql
最后可以登录MySQL看看配置是否成功。
输⼊ mysql -u root -p 进⼊mysql数据库,如果输⼊这个命令显⽰MySQL不是⼀个命令,需要把MySQL安装⽬录下的bin 这个路径配到环境变量中去,就可以使⽤这个命令登录MySQL。
输⼊密码:*****
show variables like 'char%'; 显⽰编码格式
如果都为utf8那就说明配置成功,再去看看乱码问题解决了没。
程序中的汉字变乱码的解决方法
程序中的汉字变乱码的解决方法汉字出现乱码有好几种情况,大致可分成四类:网页、文本、文档和文件乱码。
第一类是由于港台的繁体中文大五码(BIG5)与大陆简体中文(GB2312)不通用造成的;第二类是系统(菜单、桌面、提示框)显示乱码,这是注册表中有关字体的部分设置不当引起的;第三类是各种应用程序(包括游戏)本来显示中文的地方出现乱码,形成原因比较复杂,有第二类的乱码原因,也可能是软件用到的中文动态链接库被英文动态链接库覆盖造成的;最后一类是邮件乱码。
(一)、网页、文本和文档文件乱码的消除网页乱码是浏览器(如IE等)对HTML网页解释时形成的。
如果在网页的代码中有形如:〈HTML〉〈HEAD〉〈META CONTENT=“text/html;charset=ISO-8859-1”〉〈/HEAD〉……〈/HTML〉的语句,浏览器在显示此页时,就会出现乱码。
因为浏览器会将此页语种辨认为“欧洲语系”。
解决的办法是将语种“ISO-8859-1”改为GB2312,如果是繁体网页则改为BIG5。
另一种解决办法是不修改网页代码,事先为浏览器安装多语言支持包(例如在安装IE时要安装多语言支持包),这样在浏览网页出现乱码时,就可以在浏览器中选择菜单栏下的“查看”/“编码”/“自动选择”/简体中文(GB2312),如为繁体中文则选择“查看”/“编码”/“自动选择”/繁体中文(BIG5),其它语言依此类推选择相应的语系,这样可消除网页乱码现象。
还有一种解决办法是利用多内码显示平台来转换内码。
常用多内码显示平台有:“南极星”、“四通利方”、“MagicWin 98等等。
网页无乱码保存的方法是:用浏览器打开网页时,在“查看”/“编码”中选择“自动选择”,存盘时保存类型选“web页”,编码选择“UNICOD”,这样保存过的网页再次打开时,在浏览器菜单“查看”、“编码”中不管选择简体中文(GB2312)、简体中文(HZ)还是UNICODE(UTF-8)或繁体中文(BIG5),最终显示都不会出现乱码。
MySQL中文乱码问题完美解决方案
MySQL中文乱码问题完美解决方案解决乱码的核心思想是统一编码。
我们在使用MySQL 建数据库和建表时应尽量使用统一的编码,强烈推荐的是 utf8 编码,因为该编码几乎可以兼容世界上所有的字符。
数据库在安装的时候可以设置默认编码,在安装时就一定要设置为 utf8 编码。
设置之后再创建的数据库和表的时候,如果不指定编码,默认都会使用 utf8 编码,省去了很多麻烦。
数据库软件安装好之后可以通过如下命令查看默认编码:1.查询数据库软件使用的默认编码格式show variables like “%colla%”;show varables like “%char%”;其中collation,代表了字符串排序(比较)的规则,如果值是utf8_general_ci,代表使用utf8 字符集大小写不敏感的自然方式比较。
如果character_set 的值不为utf8,那么可以使用如下命令修改为 utf8。
2.修改数据库默认编码为 utf8SET character_set_client='utf8';SET character_set_connection='utf8';SET character_set_results='utf8';如果不想设置数据库软件的全局默认编码,也可以单独修改或者设置某个具体数据库的编码也可以单独修改或设置某个数据库中某个表的编码。
3.创建数据库的时候指定使用 utf8 编码CREATE DATABASE `test`CHARACTER SET 'utf8'COLLATE 'utf8_general_ci';4.创建表的时候指定使用 utf8 编码CREATE TABLE `database_user` (`ID` varchar(40) NOT NULL default '',`UserID` varchar(40) NOT NULL default '',) ENGINE=InnoDB DEFAULT CHARSET=utf8;如果数据库已经创建好了,可以使用 show database 数据库名;和 show create table 表名;查看一下数据库和表的字符集是否为 utf8 ,如果不是则在命令行下面可以用如下命令,将数据库和表编码修改为 utf8.5.修改具体某数据库或表的编码ALTER DATABASE `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;ALTER TABLE `tb_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序写入mycat中文乱码解决乱码问题可能出现的三个地方1.程序连接的编码要设置jdbc:mysql://192.168.1.1:8066/TESTDB?useUnicode=true&characterEncoding= utf82.mysql数据库的编码要设置1)查看mysql server级别的编码集首先进入mysql使用命令mysql -uroot –p然后执行命令查看: show variables like 'character%+--------------------------+----------------------------+| Variable_name | Value |+--------------------------+----------------------------+| character_set_client | latin1 || character_set_connection | latin1 || character_set_database | utf8 || character_set_filesystem | binary || character_set_results | NULL || character_set_server | latin1 || character_set_system | utf8 || character_sets_dir | /usr/share/mysql/charsets/ |+--------------------------+----------------------------+编辑/etc/mysql/my.cf文件在[client]下添加default-character-set=utf8在[mysqld] 下添加character_set_server=utf8注:[mysqld]处也可使用default-character-set=utf8,如果启动mysql服务出错的话,就使用character_set_server=utf8。
2) 查看数据库级别的编码是不是一致的,使用mysql客户端可以看到3.mycat的编码默认的是utf8格式的,明确指定在server.xml下的system标签下添加格式如下:<property name="charset">utf8</property>4. 如果业务需要utf8mb4 等复杂字符集配置对应修改:默认的是utf8格式的,明确指定在server.xml下的system标签下添加格式如下:<property name="charset">utf8mb4</property>然后根据数据库端的字符集ID配置mycat的字符集序列:配置conf/index_to_charset.properties对应为字符集ID=字符集比如45=utf8mb4上述四点配置的编码一致的话乱码就不会出现了。
补充:我是windows下的免安装版mysql,库是已经建好的,根据各种百度方案都试过无法解决,最终删除掉现有库,执行创建库命令,执行时带着库的编码,如:CREATE DATABASE mycat5 DEFAULT CHARSET utf8 COLLATE utf8_unicode_ci;如果创建库和表的时候没指定类型,下面的语句也可以分别指定库和表的编码方式ALTER DATABASE `mycat5` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;ALTER TABLE `users` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;补充服务端连接mycat乱码问题解决服务端连接Mycat 取出数据乱码使用Mycat 后,需要将原有的java服务端和PHP的服务端都从amoeba切换到mycat上.但是在测试过程中发现会存在乱码问题,情况是在不同的服务器上,部分PHP的程序连接mycat后获取数据库的内容是乱码,部分服务器又是正常的,特别的蛋疼.为此折腾了好久,终于找到了问题所在,是因为部分PHP的服务端在连接mycat的时候建立的链接是latin1的字符集一、Mycat查看链接的字符集启动mycat后通过mysql客户端登陆mycat.方法和登陆mysql一致# mysql -h127.0.0.1 -P9066 -uroot -p123456参数解释-h 后面是主机,即当前mycat 按照的主机地址,本地可用127.0.0.1 远程需要远程ip-u Mycat server.xml 中配置的逻辑库用户-p Mycat server.xml 中配置的逻辑库密码-P 后面是端口默认9066,注意P 是大写-d Mycat server.xml 中配置的逻辑库登陆成功的信息查看管理端有哪些可用命令Mysql> show @@help;这两个是我们需要用到的查看链接字符集的命令show @@backend查看后端连接状态mysql>show @@backend;show @@connection该命令用于获取Mycat 的前端连接状态,即应用与mycat 的连接mysql> show @@connection;两边的字符集需要一致,不然容易出现乱码的情况二、解决java取出数据乱码Java的jdbc配置文件jdbcDriverClassName=com.mysql.jdbc.DriverjdbcUrl=jdbc:mysql://localhost:8066/ceshi?useUnicode=true&autoReconnect=true &characterEncoding=UTF-8hibernate.dialect=org.hibernate.dialect.MySQLDialectjdbcUsername=testjdbcPassword=testjdbcInitialSize=5jdbcMaxActive=400jdbcMaxIdle=5jdbcMaxWait=30000jdbcValidationQuery=SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS配置点说明jdbcUrl=jdbc:mysql://localhost:8066/ceshi?useUnicode=true&autoReconnect=true &characterEncoding=UTF-8在连接mysql数据库的时候url后面添加useUnicode=true&characterEncoding=UTF-8 ,但是问什么要添加呢?添加的作用是:指定字符的编码、解码格式。
例如:mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码。
这时候如果添加了useUnicode=true&characterEncoding=UTF-8 ,那么作用有如下两个方面:1. 存数据时:数据库在存放项目数据的时候会先用UTF-8格式将数据解码成字节码,然后再将解码后的字节码重新使用GBK编码存放到数据库中。
2.取数据时:在从数据库中取数据的时候,数据库会先将数据库中的数据按GBK格式解码成字节码,然后再将解码后的字节码重新按UTF-8格式编码数据,最后再将数据返回给客户端。
三、解决php取出数据乱码下面是用于测试的两个个PHP小程序.在PHP连接数据库的时候,也就是mysql_connect()之后加入//设置数据的字符集utf-8mysql_query("set names ’utf8’ ");mysql_query("set character_set_client=utf8");mysql_query("set character_set_results=utf8");注意是utf8,不是utf-8 。
小程序一mysql_connect("127.0.0.1:8066","root","123456");mysql_query("set names 'utf8'");mysql_query("set character_set_client=utf8");mysql_query("set character_set_results=utf8");mysql_select_db("ceshi");$result = mysql_query("select * from tb_lucky_conduct");while($row = mysql_fetch_row($result)){print_r($row);}exit;小程序二$pdo=newPDO("mysql:host=127.0.0.1;port=8066;dbname=ceshi","root","123456"); $pdo -> query("set names 'utf8'");$pdo -> query("set character_set_client=utf8");$pdo -> query("set character_set_results=utf8");$rs = $pdo -> query("select * from tb_lucky_conduct");while($row = $rs -> fetch()){print_r($row);}PHP的字符集Sets the client character set问题参考/cover/php/1427.html解决前解决后。