其实这次出现的乱码问题完全是个人的失误引起的。创建数据库,在选择编码的时候不小心选了utf8mb3,本来是该选择utf8的,杯具!不过,塞翁失马,焉知祸福?开始猛查。。。
首先,在之前的之前就已经对Mysql测试过纯JDBC和jsp下,中文乱码是没问题的了,且统一都设成了GBK的。所以一开始根本就没注意到数据库本身上来。只考虑,在前台这边是不是没统一编码的格式!于是添加啊添加,结果该添加的都添加上了。而且在jsp中添加记录时,数据库里是可以显示中文的。到了servlet来取数据时,就开始来乱码了。
其实也只好开始Google,浏览了大部分相关内容,大同小异还是无法知道哪儿出了问题。在肯定了前台编码没什么问题的情况下,无奈找出了之前测试的代码还是一样都成功通过了。于是,将两个小表进行对比。以下是关于各方面乱码的解决方法:
场合:页面本身有中文的时候
解决办法:servlet:resp.setContentType("text/html;charset=gbk");
Jsp: <%@ page contentType="text/html;charset=gb2312"%>
注意:一定要写在PrintWriter out = resp.getWriter();之前
|
场合:解决get方式乱码问题:
解决办法:修改server.xml àURIEncoding="GBK"
|
场合:解决post方式提交内容的乱码
解决办法:request.setCharacterEncoding("GBK");
注意:一定要写在存取第一个参数之前
不要调用response.setCharacterEncoding("GBK");
|
场合:<jsp:param name="user" value="<%=s%>"/>,url地址包含中文参数
解决办法:<%request.setCharacterEncoding("GBK");%>
注意:
|
。。。。来自尚学堂。尽管参照了,但还是很迷茫。完全不知道自己乱码乱在哪个位置上。怀疑过tomcat、怀疑过浏览器,就是没怀疑Mysql。不过,查找错误的思路还是比较明确的,找个成功的数据库来参照就Ok了。
在Mysql的前端Navicat 8 for Mysql 下,不知道如何查编码。只好回到命令行了。登陆之后,输入:status,显示结果大概如下:
一切都正常嘛。切换到出现错误的myblog 数据库下,同样输入:status 结果有点在意料之中。
额,一不小心看到了Db characterset: utf8mb3 。 估计,也只能估计是这儿出了错误了。。。然后还是小心翼翼的Google了下。oh,no ,发现一帖子打着个大大的问号。。。
jsp无法正确读取utf8mb3中文字体,出现乱码,改为utf8正常,为什么?
算是可以肯定自己的问题也是在这儿了。知其然,知其所以然,稍后得好好了解下,不过,当下还是先改过来。其实,作为菜鸟级就是惨,模糊的记得这些编码是可以一条的改的,试了下:
mysql> set character_set_database=utf8;
Query OK, 0 rows affected (0.00 sec)
看到修改成功之后狂开心,跑会浏览器测一下,结果很杯具。还是乱成一片。。。又看到后半句 0 rows affected(0.00sec)不用消耗任何时间就能修改,不大可能吧。事实上,用status 返回结果是修改好了的。那问题又在哪儿呢?????????
这年头要是人品不好,要是跟自己死较劲的话,一个小问题还能把自己给逼疯了。不知道大家到这一步知道啥问题不?反正我自己还不知道。使出最笨的办法了。在同个数据库下,建立一个不同表名同属性的表来测一下,一测就通过了。杯具。。。
其实问题还是出现在utf8mb3的设置下,天知道的是一但在建立数据库设了这个值了,它的表的属性也跟这个值,表里面的列也跟着这个值。而且鬼知道,你把数据库的这个值改了,它的表的这个属性是不改的,同样表里面的这个值也是不改的;同样,改了表的这个属性也没用;直到最后把varchar 的这个utf8mb3改了,才大功告成。
本来大可以重建数据库的。。。觉得麻烦,以为一条set character_set_database=ufte就能搞定了。没想到。。。万万没想到!
最后还好有了Navicat 8 for Mysql 这个东东,挺好用的。也挺好改的。。。。。。贴图如下。
数据库的:
表:在【选项】
列:点击列时,下面就有相应的属性可以改。
==========================================================================
分享到:
相关推荐
### MySQL乱码问题解决方案 在处理数据库操作时,字符集编码问题经常会导致数据展示或存储过程中出现乱码现象。MySQL作为广泛使用的开源关系型数据库管理系统之一,在实际应用中也难免会遇到字符集不匹配导致的数据...
### 彻底解决C# ASP.NET 连接MySQL乱码问题 在开发过程中,尤其是在处理中文数据时,经常遇到的一个问题是数据库连接时出现乱码。本文将详细介绍如何彻底解决使用C# ASP.NET 应用程序连接 MySQL 数据库时出现的乱码...
MySQL 中文乱码问题解决方法 MySQL 是一个功能强大且广泛应用的关系型数据库管理系统,但是,在使用 MySQL 时,用户经常会遇到中文乱码问题。今天,我们将讨论在 MySQL 中的中文乱码问题,并提供解决方法。 MySQL...
本文将深入探讨“hibernate+mysql乱码问题”的原因、解决方案以及如何预防这类问题。 首先,我们需要了解乱码问题的根源。在数据库层面,MySQL的编码格式对数据存储和检索至关重要。如果数据库、表或列的字符集不...
### MySQL乱码问题详解与解决方案 #### 一、MySQL乱码背景及原因分析 在处理MySQL数据库时,遇到字符集编码不一致导致的数据乱码问题非常常见。这不仅会影响数据的正确显示,还可能导致数据丢失或损坏。根据提供的...
### MySQL乱码问题解决方案 #### 一、问题背景 在MySQL数据库操作过程中,经常会遇到中文乱码的问题。尤其是在处理简体中文数据时,如果数据库或连接客户端的字符集设置不当,很容易导致显示乱码或者存储错误的...
本篇文章将深入探讨MySQL乱码问题的原因,并提供一系列详细的解决方法。 1. **问题原因** - **编码不匹配**:数据库、表、字段的字符集设置与输入数据的编码不一致。 - **传输过程中的编码转换**:数据在传输过程...
### 解决MySQL乱码问题全解析 #### 一、引言 在数据库操作过程中,遇到乱码问题是较为常见的现象之一,尤其是对于频繁更换虚拟主机环境的用户来说,由于不同的服务提供商可能采用不同的MySQL版本,这很容易导致数据...
Windows 访问远程 Linux 下 MySQL 乱码问题解决方案 在实践中,我们经常遇到 Windows 访问远程 Linux 下 MySQL 数据库时出现乱码问题。这种问题的主要原因是 Windows 和 Linux 的字符编码方式不同。Windows 使用的...
### MySQL乱码问题解决办法 在使用MySQL的过程中,经常会出现字符显示乱码的问题,尤其是在处理中文数据时更为常见。本文将详细介绍如何通过多种途径解决MySQL中的乱码问题,包括更改MySQL服务器的字符集设置、调整...
首先,MySQL乱码问题的根源通常在于字符集设置。MySQL数据库、数据库表以及字段都有各自的字符集设定,这些设定需要保持一致。例如,如果你的数据库服务器使用的是UTF-8编码,那么在创建表或者插入数据时,也需要...
MySQL中的汉字乱码问题是一个常见的困扰许多开发人员和数据库管理员的问题。这主要涉及到字符编码设置不正确,导致在存储或显示汉字时出现乱码。在MySQL中,字符集是用来定义如何存储和处理字符的规则,它包括服务器...
当从MySQL 4.1以下版本升级到4.1及以上版本时,可能会出现字符集兼容性问题,导致乱码。解决方法包括: - 确保所有数据库、表、字段的字符集设置为UTF-8。 - 如果是从非UTF-8编码的数据导入,需要先将数据文件...
可以完美的帮你解决windows下mysql的乱码问题,保证数据库数据不被乱码侵蚀
### Linux下MySQL解决乱码问题 #### 背景与问题描述 在使用Linux系统时,部分用户可能会遇到MySQL数据库无法正确显示或录入中文字符的问题,即所谓的“乱码”现象。这种问题不仅影响数据的准确性和完整性,还可能...
使用 docker 启动 mysql 容器可能会出现中文乱码的情况,这里记录如何制作支持中文的 mysql 镜像 docker版本:18.06 mysql 版本:5.7 1. 创建 my.cnf 文件 [client] default-character-set=utf8 [mysql] default-...
在macOS系统中,使用MySQL数据库时,可能会遇到中文乱码的问题,这通常是由于字符集设置不正确导致的。本文将详细介绍如何解决macOS系统下MySQL中文乱码的问题,通过修改配置文件my.cnf来调整MySQL的字符集,确保...