mysql中文乱码解决

合集下载

mysql数据库乱码问题

mysql数据库乱码问题

数据库读出乱码解决一、分析常见数据库问题修改MYSQL数据库,数据表,字段的编码(解决JSP乱码)要解决JSP乱码,首先就要了解JSP乱码的原因1.架设服务器安装MYSQL时的会让你选择一种编码,如果这种编码与你的网页不一致,可能就会造成JSP页面乱码2.在PHPMYADMIN或mysql-front等系统创建数据库时会让你选择一种编码,如果这种编码与你的网页不一致,也有可能造成JSP页面乱码3.创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成JSP页面乱码4.创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成JSP 页面乱码5.用户提交JSP页面的编码与显示数据的JSP页面编码不一致,就肯定会造成JSP页面乱码.如用户输入资料的JSP页面是big5码,显示用户输入的JSP页面却是gb2312,这种100%会造成JSP页面乱码6.字符集不正确要注意:1.平时你在某些网站看到的文字可能有几种编码,如你看到一个繁体字,它有可能是big5编码,也有可能是utf-8编码的,更有可能是gb码的,没错,也就是说有简体编码的繁体字,也有繁体编码的简体字,一定要了解这一点.如果你是做一个简体编码的网页,编码定为GB2312,如果有香港和台湾地区的访客提交繁体的信息,就可能会造成乱码,解决方法就是(1)将网站编码设为utf-8,这样可以兼容世界上所有字符,(2)如果网站已经运作了好久,已有很多旧数据,不能再更改简体中文的设定,那么建议将页面的编码设为GBK,GBK与GB2312的区别就在于:GBK能比GB2312显示更多的字符,要显示简体码的繁体字,就只能用GBK7.JSP连接MYSQL数据库语句指定的编码不正确8.JSP页面没有指定数据提交的编码,就会造成乱码:所以,JSP乱码的原因无非就是以上几种,知道原因之后,要解决JSP乱码的方法也容易多了我们一一来表达:1.如果安装mysql的编码已不能更改,很多朋友是购买虚拟主机建立网站,无权更改MYSQL的安装编码,这一关我们可以跳过,因为只要后面的步聚正确,一样能解决乱码问题2.修改数据库编码,如果是数据库编码不正确:可以在phpmyadmin执行如下命令:ALTER DATABASE`test`DEFAULT CHARACTER SET utf8COLLATE utf8_bin以上命令就是将test数据库的编码设为utf83.修改表的编码:ALTER TABLE`category`DEFAULT CHARACTER SET utf8COLLATE utf8_bin以上命令就是将一个表category的编码改为utf84.修改字段的编码:ALTER TABLE`test`CHANGE`dd``dd`VARCHAR(45)CHARACTER SET utf8COLLATEutf8_bin NOT NULL以上命令就是将test表中dd的字段编码改为utf85.如果是这种情况容易解决,只需检查下页面,修改源文件的charset即可,//这个正确就无问题了6.这种情况也是修改页面charset即可,7.在JSP连接数据库的语句中,private String url="jdbc:mysql://localhost/"+DB_NAME+"user="+LOGIN_NAME+"&password="+LOGIN_PASSWORD+"&characterEncoding=GBK";//相键要看characterEncoding8.这种乱码的情况,只需在页面开头加上request.setCharacterEncoding("GBK");指定提交的即可注意:按照以上方法修改以后只能保证你新插入的数据不会乱码,举个例:如果你用户已提交的数据是BIG5,你却想通过以上方法改为可以在GB2312的网页正确显示是不可能的,这种文字内码的变换只能通过另写程序来解决,请其它相关文章总结:先要判断JSP乱码是插入数据库之后乱码,还是JSP页面刚提交过来就乱码了,如果JSP 刚接收上一页面的数据显示就乱码了,肯定是字符集不对,可者没有加request.setCharacterEncoding("GBK");如果是数据库的原因就参考上面的2,3,4种方法可能是编码问题这样连接一下数据库看看jdbc:mysql://localhost:3306/xxxx useUnicode=true&characterEncoding=UTF-8看看能否有效果二、乱码案例使用MYSQL数据库,用JSP去连接结果发现出了很多问题,主要集中在乱码显示上面,实际开发中,想必这类问题是见怪不怪了。

JSP+MySQL中文乱码问题post提交乱码解决方案

JSP+MySQL中文乱码问题post提交乱码解决方案

JSP+MySQL中⽂乱码问题post提交乱码解决⽅案写了两个jsp页⾯index.jsp和mysql_insert.jsp。

数据处理流程为:在浏览器(chrome)上访问index.jsp后在其表单上输⼊数据,提交⾄mysql_insert.jsp,mysql_insert.jsp⾸先将接收到的数据按变量存⼊MySQL的html_db数据库的person_tb中(该表原有部分数据),然后mysql_insert.jsp再拿出该表中所有数据显⽰在mysql_insert.jsp页⾯上。

现在发现,当提交的数据中含有中⽂(⽐如变量姓名的值为中⽂)时,mysql_insert.jsp页⾯上显⽰新增的那条记录中的相应中⽂(姓名的值)乱码,其他数据都显⽰正常,查看数据库,发现也是相应的含有中⽂的变量值(姓名的值)乱码。

乱码情况如下图:index.jsp中第⼀⾏有语句:<%@ page contentType="text/html;charset=gb2312"%> ,在浏览器(chrome)中访问此页⾯时⽆乱码(主要指中⽂乱码,英⽂乱码现象还没遇见过)。

(试过将gb2312换成utf-8,访问后中⽂乱码)mysql_insert.jsp中第⼀⾏有语句:<%@page language="java" pageEncoding="UTF-8"%>,在浏览器中直接访问此页⾯时⽆乱码。

mysql_insert.jsp页⾯的代码如下:复制代码代码如下:<%@page language="java" pageEncoding="UTF-8"%><%@ page import="java.sql.*" %><HTML><HEAD><TITLE>add message into table </TITLE></HEAD><BODY><%String id=request.getParameter("id"); //从表单获得String name=request.getParameter("name"); //从表单获得String sex=request.getParameter("sex"); //从表单获得String age=request.getParameter("age"); //从表单获得try{/** 连接数据库参数 **/String driverName = "com.mysql.jdbc.Driver"; //驱动名称String DBUser = "root"; //mysql⽤户名String DBPasswd = "123456"; //mysql密码String DBName = "html_db"; //数据库名String connUrl = "jdbc:mysql://localhost/" + DBName + "?user=" + DBUser + "&password=" + DBPasswd;Class.forName(driverName).newInstance();Connection conn = DriverManager.getConnection(connUrl);Statement stmt = conn.createStatement();stmt.executeQuery("SET NAMES UTF8");String insert_sql = "insert into person_tb values('" + id + "','" + name + "','" + sex + "','" + age + "')";String query_sql = "select * from person_tb";try {stmt.execute(insert_sql);}catch(Exception e) {e.printStackTrace();}try {ResultSet rs = stmt.executeQuery(query_sql);while(rs.next()) {%>ID:<%=rs.getString("id")%> </br>姓名:<%=rs.getString("name")%> </br>性别:<%=rs.getString("sex")%> </br>年龄:<%=rs.getString("age")%> </br> </br><%}}catch(Exception e) {e.printStackTrace();}//rs.close();stmt.close();conn.close();}catch (Exception e) {e.printStackTrace();}%></body></html>我的数据库设置的是全部使⽤UTF-8编码,如下图:我的虚拟⽬录下的web.xml内容如下:tomcat/conf⽬录下的server.xml⽂件的内容如下:复制代码代码如下:<U><?xml version='1.0' encoding='utf-8'?></U><Server port="8005" shutdown="SHUTDOWN"><Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JasperListener" /><Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources><Resource name="UserDatabase" auth="Container"type="erDatabase"description="User database that can be updated and saved"factory="ers.MemoryUserDatabaseFactory"pathname="conf/tomcat-users.xml" /></GlobalNamingResources><Service name="Catalina"><Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" /><Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /><Engine name="Catalina" defaultHost="localhost"><Realm className="org.apache.catalina.realm.LockOutRealm"><Realm className="erDatabaseRealm" resourceName="UserDatabase"/></Realm><Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt"pattern="%h %l %u %t "%r" %s %b" /></Host></Engine></Service></Server>tomcat/conf⽬录下web.xml⽂件的主要内容如下:复制代码代码如下:<U><?xml version="1.0" encoding="UTF-8"?></U><web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"version="3.0"><servlet><servlet-name>default</servlet-name><servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>listings</param-name><param-value>false</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet><servlet-name>jsp</servlet-name><servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class><init-param><param-name>fork</param-name><param-value>false</param-value></init-param><init-param><param-name>xpoweredBy</param-name><param-value>false</param-value></init-param><load-on-startup>3</load-on-startup></servlet><servlet-mapping><servlet-name>default</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!-- The mappings for the JSP servlet --><servlet-mapping><servlet-name>jsp</servlet-name><url-pattern>*.jsp</url-pattern><url-pattern>*.jspx</url-pattern></servlet-mapping><session-config><session-timeout>30</session-timeout></session-config><此处省略了mime-mapping的内容><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file></welcome-file-list></web-app>现在我能想到的设置编码的地⽅也就只有这么多了,其他还有哪⾥需要设置编码?恳求指导。

数据库中乱码问题解决方案

数据库中乱码问题解决方案

数据库中乱码问题解决方案数据库中乱码问题是一个常见的问题,特别是在多语言环境下。

在这种情况下,有时候我们会发现数据库中存储的数据出现乱码,这可能导致数据的有效性受到影响。

以下是一些解决方案,可以帮助您解决这个问题。

1. 确认数据库的字符集在创建数据库的时候,需要确认数据库的字符集是否正确。

如果字符集不正确,那么在存储数据的时候就会出现乱码问题。

可以通过以下查询语句来查看数据库的字符集:SHOW VARIABLES LIKE 'character_set_database';如果发现字符集有误,可以通过以下语句来修改数据库的字符集:ALTER DATABASE database_name CHARACTER SET utf8;2. 确认连接字符集连接字符集也可能导致乱码问题。

如果您的连接字符集与数据库字符集不同,那么在查询数据时就会出现乱码问题。

可以通过以下语句来查询连接字符集:SHOW VARIABLES LIKE 'character_set_connection';如果连接字符集有误,可以通过以下语句来修改连接字符集:SET NAMES utf8;3. 确认表的字符集在创建表的时候,需要确认表的字符集是否正确。

如果表的字符集不正确,那么在存储数据的时候就会出现乱码问题。

可以通过以下语句来查询表的字符集:SHOW CREATE TABLE table_name;如果发现字符集有误,可以通过以下语句来修改表的字符集:ALTER TABLE table_name CONVERT TO CHARACTER SET utf8;4. 确认字段的字符集在创建字段的时候,需要确认字段的字符集是否正确。

如果字段的字符集不正确,那么在存储数据的时候就会出现乱码问题。

可以通过以下语句来查询字段的字符集:SHOW FULL COLUMNS FROM table_name;如果发现字符集有误,可以通过以下语句来修改字段的字符集:ALTER TABLE table_name MODIFY column_name varchar(255) CHARACTER SET utf8;5. 确认应用程序的字符集除了数据库和连接字符集之外,应用程序的字符集也需要与数据库的字符集相同。

Linux下ODBC中文乱码解决方法-mysql

Linux下ODBC中文乱码解决方法-mysql

Linux下ODBC中文乱码解决方法-mysql
最近在测试Linux下的ODBC方式访问Mysql数据库的过程中,在使用测试程序读取Mysql数据库中的中文字符总是乱码,在网上搜索了很多的关于Mysql数据库的乱码问题的文章,都是要解决Mysql 数据库本身的编码一致的问题,我采用Mysql命令行的方式访问即:mysql -h sourceIP -u usrid -p pwd database,读取表中的数据能够正确显示,但是通过ODBC方式的测试程序则显示乱码,经过思考,发现问题可能是ODBC数据源采用的字符集和数据库的字符集不同引起的,故在odbc的数据源即/etc/odbc.ini(文件保存位置可能不同)中的Mysql数据源中增加了一条语句:
CHARSET = UTF8,则测试程序测试成功。

个人感想:Mysql数据库中文乱码问题查找步骤:
1. 保证数据库中中文数据插入或者通过文件导入时的字符集格式与Mysql数据库的character_set_results的字符集设置一致,当然这种字符集一定要支持中文格式
2. 上述格式保证以后如果读取后还是乱码,则查看你采用的访问数据库的方式(如本例的ODBC)的字符集是否能够设置,保证访问方式的字符集与数据库字符集保持一致。

mysql中Incorrectstringvalue乱码问题解决方案

mysql中Incorrectstringvalue乱码问题解决方案

mysql中Incorrectstringvalue乱码问题解决⽅案mysql中Incorrect string value乱码问题解决⽅案你是否遇到过类似以下错误?java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x9C' for column 'content' at row 1.产⽣这种异常的原因在于,mysql中的utf8编码最多会⽤3个字节存储⼀个字符,如果⼀个字符的utf8编码占⽤4个字节(最常见的就是ios中的emoji表情字符),那么在写⼊数据库时就会报错。

mysql从5.5.3版本开始,才⽀持4字节的utf8编码,编码名称为utf8mb4(mb4的意思是max bytes 4),这种编码⽅式最多⽤4个字节存储⼀个字符。

要想证明这个问题,可以执⾏以下sql:select * frominformation_schema.CHARACTER_SETSwhere CHARACTER_SET_NAME like 'utf8%'结果如图:因此,要解决上述异常的发⽣,需要使⽤utf8mb4编码。

解决数据库编码后,还需要解决客户端Connection连接对象使⽤的编码问题。

调⽤创建的Connection对象执⾏以下sql:conn.createStatement().execute("SET names 'utf8mb4'");如果项⽬中使⽤了DataSource数据源,只需要对数据源进⾏相关配置即可,这⾥以apache的DBCP数据源为例讲解,在spring框架下配置如下:<!-- 数据源 --><bean id="dataSource" class="mons.dbcp.BasicDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url" value="jdbc:mysql://${${data-source.prefix}.data-source.host-name}:3306/${${data-source.prefix}.data-source.db-name}?characterEncoding=utf8&amp;autoReconnect=true&amp;failOverReadOnly=false&amp;maxReconnec <property name="username" value="${${data-source.prefix}ername}" /><property name="password" value="${${data-source.prefix}.data-source.password}" /><property name="maxActive" value="150" /><property name="maxIdle" value="2" /><property name="testOnBorrow" value="true" /><property name="testOnReturn" value="true" /><property name="testWhileIdle" value="true" /><property name="validationQuery" value="select 1" /><!-- 此配置⽤于在创建Connection对象时执⾏指定的初始化sql --><property name="connectionInitSqls"><list><value>set names 'utf8mb4'</value></list></property></bean>以下解释引⽤⾃mysql参考⼿册:SET NAMES 'charset_name'SET NAMES显⽰客户端发送的SQL语句中使⽤什么字符集。

MySQL中文乱码问题的解决方法

MySQL中文乱码问题的解决方法

MySQL中文乱码问题的解决方法在使用MySQL数据库过程中,经常会遇到中文乱码的问题。

这是由于MySQL默认使用的字符集是Latin1,而大部分中文系统使用的是UTF-8字符集所致。

本文将介绍在MySQL中解决中文乱码问题的几种方法。

一、修改MySQL配置文件MySQL配置文件(f)是MySQL服务器的设置文件,通过修改该文件可以改变MySQL的默认字符集。

在Linux系统中,该文件通常位于/etc/mysql/f或者/etc/f。

在Windows系统中,该文件通常位于MySQL安装目录下的my.ini文件。

步骤如下:1. 找到f或my.ini文件并打开。

2. 在[mysqld]部分添加或修改以下内容:```[mysqld]character-set-server=utf8collation-server=utf8_general_ci```3. 保存文件并重启MySQL服务。

二、修改数据库、数据表、字段字符集如果修改MySQL配置文件没有解决中文乱码问题,可以尝试直接修改数据库、数据表、字段字符集。

1. 修改数据库字符集可以使用ALTER DATABASE语句修改数据库的字符集。

例如:```ALTER DATABASE database_name CHARACTER SET utf8 COLLATEutf8_general_ci;```2. 修改数据表字符集可以使用ALTER TABLE语句修改数据表的字符集。

例如:```ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;```3. 修改字段字符集可以使用ALTER TABLE语句修改字段的字符集。

例如:```ALTER TABLE table_name MODIFY column_name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci;```其中,table_name为表名,column_name为字段名。

史上最全的PHP+MySql中文乱码解决方案

史上最全的PHP+MySql中文乱码解决方案

我相信PHPmyadmin里查看是乱码,调用出来的话肯定100%也是乱码。

乱码问题其实也就是编码不一致导致的。

要解决这个问题需要回顾乱码问题出现以前的操作是否使用的是同一种编码。

总之一句话,要解决PHP中文乱码最好最快的解决办法就是:页面申明的编码与数据库内部编码一致,如果页面申请的页码与数据库内部编码不一致时,就设定连接编码mysql_query(”SET NAMES XXX”); XXX为连接编码。

一定可以解决乱码的问题。

在mysql+php程序开发中,总结了产生乱码原因:mysql数据库默认的编码是utf8,如果这种编码与你的PHP网页不一致,可能就会造成MYSQL乱码.MYSQL中创建表时会让你选择一种编码,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.MYSQL创建表时添加字段是可以选择编码的,如果这种编码与你的网页编码不一致,也可能造成MYSQL乱码.用户提交页面的编码与显示数据的页面编码不一致,就肯定会造成PHP页面乱码.如用户输入资料的页面是big5码, 显示用户输入的页面却是gb2312,这种100%会造成PHP页面乱码.PHP页面字符集不正确.PHP连接MYSQL数据库语句指定的编码不正确.一.首先是PHP网页的编码1. php文件本身的编码与网页的编码应匹配a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb2312″),静态页面添加<metahttp-equiv=”Content-Type” content=”text/html; charset=gb2312″>,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。

b. 如果欲使用utf-8编码,那么php要输出头:header(“Content-Type: text/html; charset=utf-8″),静态页面添加<metahttp-equiv=”Content-Type” content=”text/html; charset=utf-8″>,所有文件的编码格式为utf-8。

关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

关于Mysql中⽂乱码问题该如何解决(乱码问题完美解决⽅案)最近两天做项⽬总是被乱码问题困扰着,这不刚把mysql中⽂乱码问题解决了,下⾯⼩编把我的解决⽅案分享给⼤家,供⼤家参考,也⽅便以后⾃⼰查阅。

⾸先:⽤show variables like “%colla%”;show varables like “%char%”;这两条命令查看数据库与服务端的字符集设置如果查看出来都是gbk2312,或 gbk,那么就只能⽀持简体中⽂,繁体和⼀些特殊符号是不能插⼊的,我们只有修改字符集为UTF-8,修改⽅法如下:⽤记事本或UitraEdit打开mysql数据库安装⽬录下的my.ini⽂件打开,然后Ctrl+F搜索default-character-set,将后⾯的字符集修改为UTF8,注意要修改两个地⽅,⼀个事客户端的,⼀个是服务端的。

然后保存,重启mysql服务、、进去继续⽤show variables like “%colla%”;show varables like “%char%”;着两条语句查询⼀下字符集。

如图:到此就配置完成了。

注意:如果以前建有数据库没有删除的请⽤ show database 数据库名;和 show create table 表名;查看⼀下数据库和表的字符集是否为UTF8 ,因为修改my.ini⽂件,它不能修改原来数据库的的字符集。

在命令⾏下⾯可以⽤alter database 数据库名 character set “字符集”;命令来修改数据库字符集还有⼀点要注意的是,修改为UTF8以后,在命令⾏下⾯中⽂是乱码的,只输出到页⾯或控制台是正常的,这个问题我也上⽹查了⼀下,貌似命令⾏下⾯不⽀持UTF8,我也不太清楚。

当修改以后,在命令⾏下⾯如果要插⼊中⽂,可以在插⼊语句之前执⾏,set names gbk2312;就可以插⼊中⽂了,但是不能插⼊繁体和⼀些特殊符号。

以上就是这⼏天解决乱码的成果。

如何设置mysql数据库的中文

如何设置mysql数据库的中文
保存数据库文件,你会因为没有数据库名,导入不进去
打开你安装MYSQL数据库的路径
例如我的是在:
看到my.ini后,记事本打开后
把两个
default-character-set=lina1;
修改成
default-character-set=utf-8
保存关闭
这是前提条件,
右击打开你刚刚存取的.sql文件:
这里有一个问题需要注意,在文章的最后处,会红字提到:
把建表语句后的
ENGINE=InnoDB DEFAULT CHARSET=latin1;
这一行换成
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
当然有可能你的不是最上面的那句,
sql后面是不是有一断插入语句中文部分是乱码你先改成英文因为此时还未生效如果你的记录很重要那就先记得保存写到这里基本ok最后一步了新建数据库名称我的是nuogedb当然是按照你以前的那个名字了然后在表上右击运行批次任务文件选择
步骤的顺序别打乱了
NO1:首先备份好你的数据库的表,为.sql格式。
不要保存数据库为.sql文件,具体原因,是
希望哪里写的不好的,指点指点我
记住在建表语句后面的双括号就是你需要更改的编码方式了
改语句,中文部分是乱码,你先改成英文,因为此时还未生效,如果你的记录很重要,那就先记得保存,
写到这里基本OK了
最后一步了,
新建数据库名称,【我的是nuoge_db】当然是按照你以前的那个名字了
然后在表上右击
运行批次任务文件,选择.sql文件
编码方式别选择错了
好了,本文讲解完了
当然有些同学的是GB2312的,仿照此方法,也是可以解决的

MYSQL使用UTF8中文乱码解决办法

MYSQL使用UTF8中文乱码解决办法

MYSQL使用UTF8中文乱码解决办法MYSQL乱码的问题主要有几个环节决定,一个是前端网页;二是字符传输;三是连接MYSQL;四是MYSQL的存贮方式。

MYSQL的缺省字符集为latin1;如果不做任何处理,则存贮方式为latin;此时虽然在PHP 程序中设置set names 'utf8',可以正确存取中文;但其实utf8的字符按照latin1来存贮,占用的字节数差不多翻倍。

这样的方式,本质上是按照乱码存放,读取的时候再还原,是不太可取的。

我们要做的是实现前端UTF-8,传输UTF-8,接口UTF8,存贮UTF8。

1、前端问题:网页和PHP程序存贮为UTF-8格式;网页中指定编码格式: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />2、传输问题:apache的配置vim /etc/apache2/conf.d/charset AddDefaultCharset UTF-83、MYSQL的连接和存贮问题:修改MYSQL配置 vim /etc/mysql/f[client]default-character-set = utf8[mysqld]character-set-server=utf8collation-server=utf8_general_ciskip-character-set-client-handshake[mysql]default-character-set = utf8重启mysql/etc/init.d/mysql restart 进入MYSQL,查看配置是否正确:mysql> 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 | /usr/share/mysql/charsets/ |mysql> show variables like 'collation_%';+----------------------+-----------------+ |Variable_name | Value |+----------------------+-----------------+ |collation_connection | utf8_general_ci | |collation_database | utf8_general_ci | |collation_server | utf8_general_ci |MYSQL创建库和表的时候,都不要指定编码格式。

快速进行Access数据库转成mysql数据库及mysql导入中文数据乱码问题的解决方案

快速进行Access数据库转成mysql数据库及mysql导入中文数据乱码问题的解决方案
这样修改这个文件以后,还要将它以ANSI编码重新保存。这样操作以后,在MySQL Command Line Client中使用>source test.sql后导入mysql数据的字串都是正确的了。并且,所有文本相关的编码也都是gb2312的编码。
问题是如果直接用它来把ACCESS文件导入MYSQL会出现乱码。所以我试下以下方法,虽然麻烦点,但是还可是可行。
5.1 用Access-to-MySQL Pro来把数据库导出为*.sql 文件。
A) 运行Access-to-MySQL Pro的时候选ADVANCE MODE,下一步;
B) 选择STORE into dump file, 就是保存为l;
有可能会出现错误提示音,不管他,等它再次出现提示符的时候,导入成功。我用这种方法导入一个50M的文件没有问题,只是提示音响了十分钟。
可以在phpMyAdmin下查看数据是否正确,如果没有乱码就OK了。
二、关于数据导入mysql时的乱码的解决方案
C) 选择目标MYSQL的版本,选默认值,下一步;
D) 这下要选MS ACCESS USER-LEVElL SECURITY FILE,这个文件一般在你的OFFICE安装目录下。我的是在G:\Program Files\Microsoft Office\Office\SYSTEM.MDW , 用户名填 ADMIN , 下一步;
CREATE TABLE `userinfo` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50),
'pwd' VARCHAR(20),
PRIMARY KEY (`id`)

Mysql中文乱码问题完美解决方案

Mysql中文乱码问题完美解决方案

转载:Mysql中文乱码的解决方法第一种方法,很精辟的总结:经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧:WINDOWS 下导入应该这样使用MYSQL的命令在DOS 命令下进入mysql的bin目录下,输入mysql -uroot -p密码数据库名称<要恢复的数据库, 例如我们要把D盘的一个名称为test.sql的数据库恢复到本地的test2这个数据库,那么就这样: mysql -uroot -p密码test2以前的国外主机用的Mysql是4.x系列的,感觉还比较好,都无论GBK和UTF-8都没有乱码,没想到新的主机的Mysql是5.0版本的,导入数据后,用Php读出来全是问号,乱码一片,记得我以前也曾经有过一次切换出现乱码的经验,原因肯定是Mysql版本之间的差异问题。

只好查资料,发现了一个解决方法,就是在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SET NAMES GBK,代码如下:$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);mysql_query("SET NAMES 'GBK'");数据库字符集为utf-8连接语句用这个mysql_query("SET NAMES 'UTF8'");mysql_query("SET CHARACTER SET UTF8");mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");还有个方法就是,如果你自己的机器的话,可以更改MYSQL字符集,一般在MYSQ4和MYSQL5这两个版本中有效。

MySQL字符集GBK、GB2312、UTF8区别解决MYSQL中文乱码问题

MySQL字符集GBK、GB2312、UTF8区别解决MYSQL中文乱码问题

MySQL字符集GBK、GB2312、UTF8区别解决MYSQL中⽂乱码问题character-set-server/default-character-set:服务器字符集,默认情况下所采⽤的。

character-set-database:数据库字符集。

character-set-table:数据库表字符集。

优先级依次增加。

所以⼀般情况下只需要设置character-set-server,⽽在创建数据库和表时不特别指定字符集,这样统⼀采⽤character-set-server字符集。

character-set-client:客户端的字符集。

客户端默认字符集。

当客户端向服务器发送请求时,请求以该字符集进⾏编码。

character-set-results:结果字符集。

服务器向客户端返回结果或者信息时,结果以该字符集进⾏编码。

在客户端,如果没有定义character-set-results,则采⽤character-set-client字符集作为默认的字符集。

所以只需要设置character-set-client字符集。

要处理中⽂,则可以将character-set-server和character-set-client均设置为GB2312,如果要同时处理多国语⾔,则设置为UTF8。

解决乱码的⽅法是,在执⾏SQL语句之前,将MySQL以下三个系统参数设置为与服务器字符集character-set-server相同的字符集。

character_set_client:客户端的字符集。

character_set_results:结果字符集。

character_set_connection:连接字符集。

设置这三个系统参数通过向MySQL发送语句:set names gb2312UTF-8:Unicode Transformation Format-8bit,允许含BOM,但通常不含BOM。

是⽤以解决国际上字符的⼀种多字节编码,它对英⽂使⽤8位(即⼀个字节),中⽂使⽤24为(三个字节)来编码。

中文乱码问题

中文乱码问题

一、中文乱码问题及其解决方法中文乱码原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。

首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java 和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。

基于这种乱码,建议在Java文件中尽量不要写中文(注释部分不参与编译,写中文没关系),如果必须写的话,尽量手动带参数-ecoding GBK或-ecoding gb2312或-ecoding UTF-8编译;对于JSP,在文件头加上<%@ page contentType="text/html;charset=GBK"%>或<%@ page contentType="text/html;charset=gb2312"%>基本上就能解决这类乱码问题。

1.解决HTML页面中的中文问题:为了使HTML页面很好地支持中文,就必须在每个HTML页面的头部增加如下代码:<HEAD>。

<META http-equiv=Content-Type content="text/html;charset=gb2312">。

<HEAD>2、解决JSP页面中的中文问题为了使JSP页面很好地支持中文,就必须在每个JSP页面的头部增加如下代码:<%@ page contentType="text/html;charset=gb2312" language="java"%>3.解决Servlet响应结果的中文问题为了使Servlet页面很好地支持中文,就必须在每个Servlet页面的头部增加如下代码:response.setCharacterEncoding("gb2312");4.解决页面数据传输的中文问题为了使中文数据在各页面(组件)之间正常传递,最佳的方法就是采用编码过滤器来解决。

JSP与MySQL交互的中文乱码解决方案及总结

JSP与MySQL交互的中文乱码解决方案及总结

String s2 = new String(s1.getBytes("gb2312"),"ISO-8859-1")进行转码,其中s1为中文字符串.然后再写入到数据库一切显示正常。
为解决这个问题查看了n多资料,现作一个总结:由于字符集和字符编码方式的不同,在OS以及程序之间传递数据(尤其是multiple character sets中的数据)时便会产生乱码以及字符信息的丢失.解决这个问题的关键便是了解数据输出端和接收端使用的字符集和字符编码方式,如果这两种编码方式不同,便需要在数据出口或入口处进行 转码。一般的说,在编写代码,编译,以及运行期间都会字符数据的传递,因此需要特别小心。
IE也可以设置成总是使用UTF-8编码来发送请求.应用程序层,每个配置在服务器下的程序都可以设置自己的编码方式,这个我目前还没有用到,以后再学习。
运行时的转码,运行时期,应用程序很可能需要与外部系统进行交互,例如对数据库进行读写,对外部文件进行读写.在这些情况下,应用程序免不了要和外部系统进行数据交换。那么对于中文字符, 数据出入口的编码方式就显得特别重要了。一般外部系统都有自己的字符编码方式,我的例子中配置的MySQL就是使用的UTF-8编码。JSP页面通过设定"charset=gb2312",
encoding for text file"。如果设置为GBK,那么编写代码并保存这关就过了。
对于JSP程序而言,编写完代码后就交给Container,首先它们会被转成.java文件,然后编译成.class才能提交给服务器执行.这个过程也存在字符编码问题.java编译器(javac)使用操作系统的语言环境作为默认的字符编码方式,JRE(Java Runtime Environment)也是这样。只有当编译和运行环境的字符编码方式与存储源文件的编码方式相同时,中文字符才能正确地显示。否则就需要在运行时进行转码,使它们使用兼容的编码。这里的设置可以分为几个层次:操作系统层支持的语言,这是最重要的,因为它会影响JVM的默认字符编码方式,同时对字符的显示,如字体等有直接影响;J2EE服务器层,大多数服务器都可以对字符编码进行自定义的配置,例如Tomcat就可以通过web.xml中设置javaEncoding参数设置字符编码,默认是UTF-8.

乱码解决的四种方法

乱码解决的四种方法

乱码解决的四种方法下边提供4种不同情况的乱码解决方案,基本上包括了web开发中出现乱码的不同情况。

主要针对java+ mysql 开发环境提出的乱码解决方案,只要作相应修改,可以用于不同语言环境的乱码问题解决。

下边提供4种不同情况的乱码解决方案,基本上包括了web开发中出现乱码的不同情况。

主要针对java+mysql开发环境提出的乱码解决方案,只要作相应修改,可以用于不同语言环境的乱码问题解决。

一、JSP页面显示乱码下面的显示页面(display.jsp)就出现乱码:程序代码<html><head><title>JSP的中文处理</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><%out.print("JSP的中文处理");%></body></html>对不同的WEB服务器和不同的JDK版本,处理结果就不一样。

原因:服务器使用的编码方式不同和浏览器对不同的字符显示结果不同而导致的。

解决办法:在JSP页面中指定编码方式(gb2312),即在页面的第一行加上:<%@ page contentType="text/html; charset=gb2312"%>,就可以消除乱码了。

完整页面如下:<%@ page contentType="text/html; charset=gb2312"%><html><head><title>JSP的中文处理</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><%out.print("JSP的中文处理");%></body></html>二、表单提交中文时出现乱码下面是一个提交页面(submit.jsp),代码如下:程序代码<html><head><title>JSP的中文处理</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><form name="form1" method="post" action="process.jsp"><div align="center"><input type="text" name="name"><input type="submit" name="Submit" value="Submit"></div></form></body></html>下面是处理页面(process.jsp)代码:程序代码<%@ page contentType="text/html; charset=gb2312"%><html><head><title>JSP的中文处理</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><%=request.getParameter("name")%></body></html>如果submit.jsp提交英文字符能正确显示,如果提交中文时就会出现乱码。

中文乱码问题终极解决方案

中文乱码问题终极解决方案

中文乱码问题终极解决方案在开发过程中我们会遇到各种各样的中文乱码问题,极为烦恼,现将开发过程中的几点中文乱码处理问题总结如下,大家共勉。

注:以下编码设置以utf-8为例一,在做web开发中,乱码主要分为:数据库乱码,jsp页面乱码,服务器乱码3部分下面我们以用户注册中文名字为例说明用户提交注册信息,登陆后显示注册名时,信息的传递流程。

用户在jsp页面输入“张三”中文注册,“张三”这条消息通过服务器,传给后台,后台调用方法,将张三插入数据库,当用户注册成功并登陆,后台类调用相应方法,读取数据库中的相应信息,将信息从后台通过服务器传回到界面,进行显示。

这期间主要是jsp页面,服务器,数据库之间的交互,中文乱码问题也是在这3个地方出现。

所以在出现中文乱码问题后,应进行跟踪,先判断出是那个过程出现了乱码。

1)跟踪过程在开发创建工程时,要先确保你的工程编码,工程内所有的文件编码全部都是"UTF-8"编码2)如何判断是那一部分出现了乱码首先,用户在界面输入的是中文,在你的后台类中药request界面穿过类的信息,讲你传过来的信息打印,如果是乱码,则说明乱码可能的产生地方为你的jsp页面传送的时候就已经是乱码,或者是经过服务器的时候发生的乱码3)JSP页面乱码解决方案在jsp页面设置<%@page pageEncoding="utf-8"contentType="text/html;charset=utf-8" %>这样jsp页面的到的数据都会以UTF-8的编码去进行传递4)服务器乱码解决方案如果这个时候后台接收到的数据还是乱码,那么说明是在传输过程中变成乱码的,那么设置服务器的编码,以TOMCAT服务器为例。

打开服务器的安装包->conf文件夹->server.xml<Connector port="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"URIEncoding="utf-8"/>设置成这个样子的如果这个时候还是乱码,那么在你的后台类,打印输出语句之前,里要写上这样的一句代码,request.setCharacterEncoding("utf-8");当要将数据响应回界面以后,需要response.setContentType("text/html;charset=utf-8");执行完上述步骤之后,数据要插入到数据库了,如果你从数据库中读取出来的是乱码,那么毫无疑问,数据是在你的数据库中变成乱码的5)mySQL数据库乱码解决方案数据库乱码是中文乱码中最麻烦的一项(笔者是这样认为的,开发中各种的乱码也确实如此)。

MySQL的中文UTF8乱码问题

MySQL的中文UTF8乱码问题

MySQL的中⽂UTF8乱码问题从MySQL⽀持Unicode后,为了与时俱进,我们的web程序也开始考虑⽤UTF8了。

其实UTF8也⽤了好⼏年了,程序基本能跑,没什么⼤问题,但是数据倒换的时候,总是遇到不爽的事情。

【问题现象】⽹页xxx.php⽤EditPlus另存为UTF8格式,MySQL在my.ini⾥设置default-character-set=utf8,建表时加了CREATE TABLE`xxx ` (myname varchar(255)) ENGINE=MyISAM DEFAULT CHARSET=utf8,⽤xxx.php执⾏insert/update/select出来的都是中⽂,貌似没问题,但是⽤phpMyAdmin看select是乱码,⽤第三⽅⼯具软件(如SQLyog)看select也是乱码,mysqldump也是乱码,很不爽。

当然,如果你建表的时候,选择了binary/varbinary/blob类型,不会发现乱码,因为指定的是⼆进制保存,MySQL保存数据时就没有编码的概念了。

【查找问题】虽然在my.ini⾥设置default-character-set=utf8,但是执⾏以下命令时有新发现:mysql> 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 | latin1| character_set_server | utf8| character_set_system | utf8| character_sets_dir | D:\mysql\share\charsets\+----------------------------------------+-------------------------8 rows in set (0.00 sec)mysql> SHOW VARIABLES LIKE 'collation_%';+---------------------------------------+------------------| Variable_name | Value+---------------------------------------+------------------| collation_connection | latin1_swedish_ci| collation_database | utf8_general_ci| collation_server | utf8_general_ci+--------------------------------------+------------------3 rows in set (0.00 sec)发现Value列⾥⾯不全是utf8,仍然有部分是latin1,⽐如其中的client和connection。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

转载:Mysql中文乱码的解决方法第一种方法,很精辟的总结:经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧:WINDOWS 下导入应该这样使用MYSQL的命令在DOS 命令下进入mysql的bin目录下,输入mysql -uroot -p密码数据库名称<要恢复的数据库, 例如我们要把D盘的一个名称为test.sql的数据库恢复到本地的test2这个数据库,那么就这样: mysql -uroot -p密码test2以前的国外主机用的Mysql是4.x系列的,感觉还比较好,都无论GBK和UTF-8都没有乱码,没想到新的主机的Mysql是5.0版本的,导入数据后,用Php读出来全是问号,乱码一片,记得我以前也曾经有过一次切换出现乱码的经验,原因肯定是Mysql版本之间的差异问题。

只好查资料,发现了一个解决方法,就是在mysql_connect后面加一句SET NAMES UTF8,即可使得UTF8的数据库消除乱码,对于GBK的数据库则使用SET NAMES GBK,代码如下:$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);mysql_query("SET NAMES 'GBK'");数据库字符集为utf-8连接语句用这个mysql_query("SET NAMES 'UTF8'");mysql_query("SET CHARACTER SET UTF8");mysql_query("SET CHARACTER_SET_RESULTS=UTF8'");还有个方法就是,如果你自己的机器的话,可以更改MYSQL字符集,一般在MYSQ4和MYSQL5这两个版本中有效。

第二个方法:很不错的解说,可以试一下mysql乱码处理总结:(1)java中处理中文字符正常,在cmd client中显示乱码是字符集的问题.(2)字段长度设置够长,但插入中文字符时提示com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column错误是字符集的问题.(3)乱码问题归根到底是字符集的问题,那就从字符集设置方面考虑,不外乎下面几个方面:server,client,database,connection,results.-------------------------解决办法----------------------(1)修改my.ini(MySQL Server Instance Configuration 文件)# CLIENT SECTION //客户端[client]port=3306[mysql]default-character-set=gbk# SERVER SECTION //服务端[mysqld]default-character-set=gbk(2)修改data目录中相应数据库目录下的db.opt配置文件default-character-set=gbkdefault-collation=gbk_chinese_ci(3)数据库连接串中指定字符集URL=jdbc:mysql://yourIP/college?user=root&password=yourPassword&useUnicode =true&characterEncoding=gbk 注:在mysql4.1.0版要加useUnicode=true&characterEncoding=gbk 如果是5.0版以上的,加不加都是没有关系的!(4)在创建数据库时指定字符集create database yourDB CHARACTER SET gbk;(5)在dos命令上要设置set names gbk好了,经过检查上面四个方面的设置,应该OK 了!不会出现诸如com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column等问题.第三种方法,说有太复杂了,反到不知道怎么弄了,你试试,也许可以用得上1.修改/etc/f文件,改成这样:[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockdefault-character-set=utf8[mysql.server]user=mysqlbasedir=/var/lib[mysqld_safe]err-log=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid注意:就是加入了一句default-character-set=utf8。

2./etc/init.d/mysqld restart 重新启动mysql;3.打开phpmyadmin,选择lang为"Chines simplifies(zh-utf-8)",选择"MySQL 连接校对"为"utf8_general_ci "点“显示MySQL 的运行信息”--“变量”,可以看到:character set client utf8 utf8character set connection utf8 utf8character set database utf8 utf8character set results utf8 utf8character set server utf8 utf8character set system utf8 utf8collation connection utf8_general_ci utf8_general_cicollation database utf8_general_ci utf8_general_cicollation server utf8_general_ci utf8_general_ci从这里可以看到character全部变成utf8了。

有人要问,为什么都要改成utf8呢?改成GB2312不行吗?解释如下:我也不想改成utf8,只是phpmyadmin2.6在mysql4.1的时候只会用utf8,连其他页面的charset也都是utf8,改成gb2312一定会乱码,我们只能凑phpmyadmin 了。

只有在mysql3.23的时候,phpmyadmin才会多一个gb2312的页面charset,这时候是正常的。

3.将以前的mysql3的库文件导入mysql4.1的库有两种情况:一是从phpmyadmin上导入,这时候你要注意的是在选择库文件的页面左下脚有个“文件的字符集:”,默认是utf8,要改成gb2312,否则导进去乱码;二是在linux下导入,这时候你需要先在库文件的头部加一行:SET NAMES 'gb2312'; 注意最后也是;号,别漏了。

然后执行mysql -u用户名-p密码xxx.sql > 库名导入完成以后再用phpmyadmin打开看,里面的中文字就是正确的。

4.从mysql4.1里导出库文件一.用phpmyadmin导出导出倒是问题不大,如果phpmyadmin的浏览页面里显示的中文是正常的,那么导出肯定也是正常的二.在linux上导出如果用mysqldump导出出现了乱码也没有关系,可以运行iconv来转换一下iconv -c -f UTF-8 -t GB2312 库文件名> 新的gb2312的库文件名综上所述,你要注意:1。

尽量在需要导入的库文件的开头加入SET NAMES 'gb2312';告诉mysql你要导入的是一个gb2312的文件;2。

可能你需要这个:SET NAMES 'utf8';在登陆到mysql后用,把character的一些默认参数改到utf8上,有时可以减少一些困扰,不过也不是必须的。

在mysql上使用:SHOW VARIABLES LIKE 'character_set_%';用来查看当前的状态。

3.如果出现乱码也不要怕,一是你要注意留存原有的备份,二是用iconv来进行转化。

在正常使用之前注意做导入导出的测试,确保万无一失。

最后加一句:原创文章,转载请注明出处。

呵呵邮件:support@作者: MySQL 发布日期: 2005-12-14我升级了MYSQL到4.1.2,phpmyadmin用的是2.6.2。

数据表里面有中文的字段中文都变成了乱码,导出数据也是乱码。

我用以前的2.5.7没有问题,想问一下,应该在phpmyadmin的那个文件里改哪个设置一下才能显示出来的是正常的中文字?和字符相关的变量中这几个和sql很有关系:character_set_clientcharacter_set_connectioncharacter_set_results此外就是数据库中对相应字段设置的charact set,如果没有对字段设置,缺省是table的charact set,table也没有指定则缺省使用database的。

上面3个变量的作用是这样的,client表示客户端发送过来的字符集,results表示发送到客户端的字符集(这两个分开是因为发送过来和发送过去的不一定是同一个客户端),connection则在客户端和数据库起一个连接作用。

具体是这样:比如我在mysql命令行设置client为gbk,connection为utf8,results 为gbk,数据库为big5,当我发送一个insert语句的时候,这个语句作为gbk代码,先转为utf8代码(connection),再转为big5(database)插入数据库。

而运行一个select语句的时候,从数据库得到的结果则相反的过程,由big5转为utf8,再转为gbk,你得到gbk的结果。

因此最主要的是让client和results和你使用的客户端一致。

比如你的网页是utf8编码,你就要设置这两个为utf8。

而在mysql命令行的时候,我用的是2000,需要设置为gbk而我们用的set names XXX,实际上就是同时设置这3个变量为XXX。

在这样的情况下,我们可以把一个数据库中的不同表或不同字段设为不同的字符集,只要上面3个设置正确,就可以在数据库中同时使用不同的字符集。

相关文档
最新文档