`

对于Mysql而言,默认编码是ISO8859-1,显示乱码

 
阅读更多

 记得以前也研究过这问题,现在只是重新来看下这问题.其实mysql的中文显示问题最根本的原因就是各个软件或环境对数据编码的不同,而造成在有些地方出现乱码.

   如下(这是我以前碰到的问题):
 
对于Mysql而言,默认编码是ISO8859-1,而jsp的request的默认编码也是ISO8859-1,所以如果要把请求参数插入数据库,形式可以如下:
String sql="insert into test (colum) values ('"+request.getParameter("name")+"')";

在struts中,从模型里面接受过来的参数编码默认的也是ISO8859-1,在写入数据库时,不需要将显示的中文转换为ISO8859-1.

string str=new String(str.getBytes("gb2312"),"ISO8859-1");

即将编码为gb2312的字符转化为ISO8859-1的字符

str=new String(str.getBytes("ISO8859-1"),"gb2312");
即将编码为ISO8859-1的字符转化为gb2312的字符

在从数据库中读数据时得到是ISO8895-1编码的字符。如果需要显示中文,还要将其转化为gb2312编码的字符。例如:
ResultSet st;
XM = new String(st.getString("XM").getBytes("ISO8859-1"),"gb2312");字符XM就转化为gb2312了,可以在页面上正常的显示为中文了

注意:在对字符进行转换时一定要仔细检查每个页面,都要做如下设置(如果没有可能会出现乱码)
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

在做文件上传时。
在视图页面还是要做上面的处理,及在视图顶端设置如<%@ page language="java" contentType="text/html;charset=gb2312"%>,这样,文件在上传到服务器时,会正确显示中文,不至于出现乱码。在控制器,写入文件,及输出流时还要保持文件名的原始编码。例如:

fname=file.getFileName();
StreakmOut=new FileOutputStream(dir+"/"+fname);


   从上面我们可以清楚的知道,各个不同的地方默认编码的情况,根据需要我们完全可以更改这些默认编码,达到我们需要的目的.

   不过,DBACentral for MySQL 图形化软件的编码无法改变,至少我是找不到地方改,今天花了一下午的时间研究这软件,几乎把它翻了个底朝天,就是找不到,都怀疑它是不是把编码指定了,接着就在摆渡了一下,没有太多关于这软件的操作说明,我事先也查过它的帮助问档,输入character只找到4条结果,都没用,输入character set搜索,没有结果.晕死了,帮助文档那么大,还有像蚂蚁那么多的英文字母在那爬着,我头都看大了,就是找不到一条关于设置字符集的单词,我英文水平还不至于会把这几个简单的单词看漏.最后摆渡了三四下,终于在web上找到一丝信息.地址连接如下:http://x.discuz.net/365518/viewspace_26568.html

没必要打开,高手就在里面说了一句话:DBACentral for MySQL 的介面比 Navicat 更像 M$ Access。一開始的連線畫面只能選一個資料庫來管理。不過因為 DBACentral for MySQL 完全無法更改編碼,所以其它的介面也看看就好

    如何在mysql数据库中显示中文的问题.很多人想在这里看到中文结果,虽然这并不影响你的数据在前台显示.

    其实只需要改变一下mysql的默认编码即可.同时还要注意,每张表还有一个默认编码也要一同改.

    现在就摘录一为csdn上一位朋友的文章:

 

问:如何操作才能让mysql在stucts结构中正确存储和显示中文

答:执行  
mysql>show   variables   like   "%char%";  
mysql>show   variables   like   "%colla%";  

能看到你的mysql字符集设置,如果有不是gbk,可以用下面的命令改变它:  
mysql>SET   character_set_client   =   gbk  
mysql>SET   character_set_connection   =   gbk  
mysql>SET   character_set_database   =   gbk  
mysql>SET   character_set_results   =   gbk  
mysql>SET   character_set_server   =   gbk  
mysql>SET   collation_connection   =   gbk_bin  
mysql>SET   collation_database   =   gbk_bin  
mysql>SET   collation_server   =   gbk_bin  
另外,对你原来有中文的表执行下面语句:  
ALTER   TABLE   表名   CONVERT   TO   CHARACTER   SET   gbk;

分享到:
评论

相关推荐

    ISO-8859-1 、Latin-1 西欧编码介绍及应用

    ISO-8859-1编码,也被称为Latin-1编码,是一种用于表示西欧语言的字符编码标准。它主要用于展示英文、法文、德文、西班牙文等西欧语系的语言字符,其字符集覆盖了西欧语言常见的符号和字母。ISO-8859-1兼容ASCII编码...

    如何解决MySql-JSP中文乱码问题

    在开发Web应用时,尤其是使用Java技术栈如JSP、Servlet与MySQL数据库交互时,中文乱码问题常常困扰着开发者。...这样,无论是在MySQL、JSP、Servlet还是C#或.NET环境中,中文字符都能正常显示,避免乱码的出现。

    EL中文显示乱码的解决办法

    在使用EL(Expression Language)表达式处理中文字符时,可能会遇到中文显示乱码的问题,这通常是由于字符编码不一致导致的。以下是一些详细的解决步骤和相关知识点: 1. **理解字符编码**: - 字符编码是用来表示...

    MySQL编码与中文显示

    MySQL 的默认编码是 Latin1,也就是 ISO-8859-1 编码,这种编码格式不支持中文字符。因此,如果我们需要在 MySQL 中存储中文数据,就需要修改数据库的默认编码为 gbk 或者 utf8。 查看数据库编码方式 要查看...

    Java Web程序开发中字符乱码的原因与解决办法.pdf

    3. 数据库连接的乱码问题:以MySQL为例,默认编码可能为ISO8859-1。要解决数据库连接乱码,需要修改MySQL安装目录下的my.ini文件,为[client]、[mysql]、[mysqld]、[mysqld_safe]等部分添加default-character-set=...

    更改MySql数据库的默认编码格式

    在 MySQL 数据库中,默认的编码格式对于数据的存储和读取起着至关重要的作用。如果我们想要更改 MySQL 数据库的默认编码格式,该如何操作呢?下面我们将详细地介绍如何更改 MySQL 数据库的默认编码格式。 一、设置...

    数据库编程之编码转换实例--乱码分析

    当原始数据的编码与系统识别的编码不匹配时,就会出现无法正确显示的字符,也就是我们常说的乱码。 在数据库编程中,编码问题可能出现在以下几个环节: 1. 数据库设置:数据库管理系统(如MySQL、Oracle、SQL ...

    MySQL显示乱码解决方案

    ### MySQL显示乱码解决方案 #### 问题背景与现象 在MySQL数据库中,如果出现中文乱码的情况,将严重影响数据的准确性和可用性。本篇文章基于MySQL 5.5版本介绍如何解决显示乱码的问题,虽然文章针对的是特定版本,...

    JSP-GET-POST传递的乱码问题

    - GET请求的参数通常会被附加到URL后面,浏览器会按照URL编码规则(默认是UTF-8)对参数进行编码,但服务器端默认可能使用的是ISO-8859-1。 - 解决方案:在服务器端(如JSP或Servlet)设置请求的字符编码为UTF-8,...

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

    此时,需要在写入前对字符串进行转码,例如将GBK编码的字符串`s1`转换为ISO-8859-1编码:`String s2 = new String(s1.getBytes("gb2312"), "ISO-8859-1");`,然后将`s2`写入数据库。 3. **开发环境配置**: - 开发...

    mysql+php乱码编码配置修改方案(非常详细纯原创)

    接着,我们关注MySQL服务器的配置文件,通常位于`mysql-5-0-83`文件夹下的`my.ini`。 在`my.ini`文件中,有两个重要的部分需要修改:`[client]`和`[mysqld]`。在`[client]`部分下方添加`default-character-set = gb...

    java编程出现中文乱码解决方法一

    - 如果字符串非空,则使用`getBytes("ISO-8859-1")`将字符串转换为ISO-8859-1编码的字节数组。 - 接着使用`new String(byte[], "utf-8")`将字节数组转换回UTF-8编码的字符串。 - **异常处理**: - 在转换过程中...

    jsp----->中文乱码问题

    - 设置HTTP请求编码:在Servlet或过滤器中解析请求参数时,使用`new String(request.getParameter("param").getBytes("ISO-8859-1"), "UTF-8")`进行转换。 - 数据库连接配置:在数据库连接URL中指定正确的字符集,...

    mysql导出服务器数据库,cmd显示乱码,cmd操作等

    ### MySQL导出服务器数据库、CMD显示乱码及CMD操作详解 #### 一、MySQL导出服务器数据库 在进行数据库管理时,经常会遇到需要备份或迁移数据的情况。MySQL提供了多种工具来帮助用户完成这一任务,其中最常用的就是...

    Mysql插入中文乱码问题解决

    通常,MySQL 的默认字符集是 Latin1(ISO 8859-1),这是一种西文字符集,并不支持中文字符。当尝试存储中文数据时,由于字符集不匹配,就会导致乱码现象。 此外,需要注意的是 UTF-8 是一种国际通用的编码格式,它...

    windows访问远程linux下mysql乱码问题

    这两个配置项的作用是将 MySQL 的默认字符编码设置为 UTF-8,并将客户端的字符编码设置为 GBK。这样,当 Windows 访问远程 Linux 下 MySQL 数据库时, MySQL 就会使用 GBK 编码。 接下来,我们需要重新启动 MySQL ...

    linux secureCRT查看mysql中显示乱码

    ### Linux SecureCRT 查看 MySQL 中显示乱码的问题解析与解决方案 #### 一、问题背景及描述 在使用SecureCRT连接Linux服务器并通过MySQL客户端查询数据时,可能会遇到字符集不匹配导致的数据显示乱码问题。例如,...

    mysql乱码问题解决

    ### MySQL中文乱码问题解析与解决方案 #### 一、乱码原因分析 在MySQL数据库中遇到中文乱码问题,通常可以归结为以下几个方面: 1. **Server本身的设定问题**:比如服务器使用的字符集仍停留在老旧的`latin1`而非...

    je22中乱码问题

    - Tomcat服务器默认使用ISO-8859-1编码处理请求参数,因此在获取请求参数时,应考虑将参数先转换为ISO-8859-1编码,再转换为目标编码。 - 数据库查询结果通常以ANSI编码返回,需要转换为UTF-8或目标编码格式。 ...

Global site tag (gtag.js) - Google Analytics