热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

MySql乱码问题解决实录

MySql乱码问题解决实录开发过程中总避免不了遇到恶心的乱码,或者由乱码引发的一系列问题。出现乱码是字符集的原因一般而言和逻辑没有太大关系,也就是说整个系统大的方向没有问题,小的地方出现了漏洞,进而导致...SyntaxHighlighter.all();

MySql乱码问题解决实录
 
开发过程中总避免不了遇到恶心的乱码,或者由乱码引发的一系列问题。出现乱码是字符集的原因一般而言和逻辑没有太大关系,也就是说整个系统大的方向没有问题,小的地方出现了漏洞,进而导致程序不能正常运行,所以说出现乱码是一件令人非常很恶心的事情。这里简要介绍一下自己遇到的乱码问题和解决问题的过程中的想法以及大致的操作,我们要学会的是如何分析问题进而解决问题,而不仅仅是照着网上的操作去一次次的解决眼前的困难,“鱼”与“渔”的区别就在于此。    www.2cto.com  
 
交代背景:
要实现的功能很简单,用dom4J读取XML文件然后借助Spring以及Hibernate将数据写入到MySql数据库(多表)中,当然整个过程是由Spring控制事务一次性完成,有异常进行回滚。
现象:在往数据库里写数据写到一半的时候报错,大致的错误信息是:记录不是唯一。
分析和操作:
检查了一遍自己的代码,用Spring当中的HibernateTemplete保存数据,应该没有问题。
 
再次观察现象:好像是外键约束的问题,因为每当插入到带有外键的表的时候数据死活录入不进去。
分析和操作:
既然是外键表的问题,首先应该确定外键表中的内容是什么,于是手动改数据库隔离等级查看数据,果然里面是乱码!
 
问题:乱码是怎么进入数据库的?
分析和操作:
要么读取xml的时候就是乱码,要么在往数据库里写的时候变成乱码。再次断点调试测试在程序中是否乱码。
 
现象:在eclipse当中打印出来信息没有出现乱码问题
分析与操作:
这就说明在程序中一切没有问题,是数据库的问题。于是先改数据库链接字符串指定编码,再改数据库的编码,再次断点调试。
 
现象:数据库中依然是乱码,但是乱码的形式换了,之前全是“?”现在是一些乱七八糟的文字。
分析和操作:
很明显上面一系列修改编码格式的操作起作用了,只是没有修改对而已。再次检查各项的编码格式,没有发现问题
问题一度陷入僵局……
寻求帮助:秋提出别用命令窗口了,太麻烦了,用第三方客户端吧,于是换用第三方客户端,奇怪的是客户端显示没有问题!
分析和操作:
客户端没有问题命令窗口有问题,那就说明数据库里已经不是乱码,乱码可能是命令行显示的问题。设置命令行显示字符,果然显示正常!再次测试数据导入----一切OK。
 
思考与总结:
现象:其实在第一次修改完各项编码的时候这个问题已经算是解决了,但是由于当时自己断点调试的时候没有让程序执行完所以一直认为数据库中依然是乱码。
总结:
应该在每次调试的时候让程序跑完,将错误的上下文环境模拟出来,而不是只关注错误本身。
 
现象:在这里涉及到编码的地方有XML的编码、dom4j的读取编码、数据库编码、数据库连接字符串指定编码、命令行窗口显示编码。这其中哪个没有注意到问题也解决不了(这里自己没有意识到最后一个)。
总结:
全局观的意思是把握每个控制变量,从开始到结束,有意识的跳出环境来做假设。
 

推荐阅读
  • 基于Spring Boot的家政服务平台毕业设计项目(含源代码)
    本文档介绍了如何搭建和运行一个基于Spring Boot的家政服务平台,旨在为计算机专业学生提供毕业设计参考。项目涵盖了从环境配置到核心功能实现的全过程。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • ssm框架整合及工程分层1.先创建一个新的project1.1配置pom.xml ... [详细]
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • Java EE CDI:解决依赖关系冲突的实例
    在本教程中,我们将探讨如何在Java EE的CDI(上下文和依赖注入)框架中有效解决依赖关系的冲突问题。通过学习如何使用限定符,您将能够为应用程序的不同客户端提供多种接口实现,并确保每个客户端都能正确调用其所需的实现。 ... [详细]
  • Flowable 6.6.0 表单引擎在Web应用中的集成与使用
    本文档提供了Flowable 6.6.0版本中表单引擎在Web应用程序中的配置和使用指南,包括表单引擎的初始化、配置以及在Web环境下的具体实现方法。 ... [详细]
  • 本文提供了详细的步骤,介绍如何将基于Maven的Java EE项目从Eclipse IDE部署到JBoss应用服务器上。适合初学者和中级开发者参考。 ... [详细]
  • 基于Java的学生宿舍管理系统设计
    本论文探讨了如何利用Java技术设计和实现一个高效的学生宿舍管理系统。该系统旨在提高宿舍管理的效率,减少人为错误,同时增强用户体验。通过集成用户认证、数据管理和查询功能,系统能够满足学校宿舍管理的多样化需求。 ... [详细]
  • 本文将指导您如何在MyEclipse 6.0.1环境中手动搭建Struts 2框架,并实现一个简单的用户登录功能。通过本文,您将了解如何解决开发过程中可能遇到的一些常见问题。 ... [详细]
  • Eclipse 中 Maven 的基础配置指南
    本文详细介绍了如何在 Eclipse 环境中配置 Maven,包括环境变量的设置、Maven 插件的安装与配置等关键步骤,旨在帮助开发者顺利搭建开发环境。 ... [详细]
  • JSP与MySQL集成:实现数据添加与查询功能
    本文介绍了如何使用JSP和MySQL数据库来实现基本的数据添加和查询功能,包括数据库的准备、JSP页面的编写以及数据操作的具体步骤。 ... [详细]
  • Python3 中使用 lxml 模块解析 XPath 数据详解
    XPath 是一种用于在 XML 文档中查找信息的路径语言,同样适用于 HTML 文件的搜索。本文将详细介绍如何利用 Python 的 lxml 模块通过 XPath 技术高效地解析和抓取网页数据。 ... [详细]
  • springMVC JRS303验证 ... [详细]
  • 本文详细介绍了如何正确配置Java环境变量PATH,以确保JDK安装完成后能够正常运行。文章不仅涵盖了基本的环境变量设置步骤,还提供了针对不同操作系统下的具体操作指南。 ... [详细]
  • 近期我们开发了一款包含天气预报功能的万年历应用,为了满足这一需求,团队花费数日时间精心打造并测试了一个稳定可靠的天气API接口,现正式对外开放。 ... [详细]
author-avatar
流血的云_-86097
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有