乱码问题

来源:互联网 发布:mac电脑打不开淘宝网 编辑:程序博客网 时间:2024/06/06 22:45

前言:记录我所遇到的各式各样的乱码问题以及所对应的解决方案

问题一:

时间:2016年6月29日
背景:我统一用的是UTF-8的编码格式,做留言板动态页面时,利用from表单的post方式提交到servlet的doPost中,然后通过程序把表单数据插入到MySQL数据库中时,提交的中文数据在数据库中时乱码显示的。
分析:可能的原因

1、在html的.jsp页面里的编码格式不是UTF-8格式。

解决方法:
在.jsp页面上添加
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
在html的<head>标签范围内添加
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

2、from表单提交时的编码格式不正确。(前提:前面的编码格式都正确。)

查看form表单标签的属性值中的enctype属性,enctype属性对应有以下三种编码格式:
application/x-www-form-urlencoded:窗体数据被编码为名称/值对。这是标准的编码格式(默认);在发送到服务器之前,所有字符都会进行编码(空格转换为“+”,特殊符号转换为 ASCII HEX值)
multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一部分。
text/plain:  窗体数据以纯文本的形式进行编码,其中不含任何控件或格式字符。(空格转换为“+”加号,但不对特殊符号编码)
解决方法:
由于我提交的数据是<input>标签的数据,说以选择默认的表中编码格式。
至于其他的调教数据根据自己的情况来设置适合的enctype属性对于的编码格式。

3、servlet在获取表单数据是没有设置编码格式(前提:前面的编码格式都正确。)

解决方法:
在使用response.getParameter()方法获取数据前加上下面设置编码格式的方法。
request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");

4、Java程序提交到MySQL数据库中出现乱码问题(前提:前面的编码格式都正确。)

解决方法:
设置数据库的连接地址url,如下设置添加?useUnicode=true&characterEncoding=utf8
url=jdbc:mysql://连接端口/数据库的名字?useUnicode=true&characterEncoding=utf8
我数据库的my.ini配置文件的是UTF-8字符集所有就不说这个了,不是的朋友可以按照下面修改配置。
[mysql]# 设置mysql客户端默认字符集default-character-set=utf8character_set_server = utf8

问题二:

未完待续。。。。。。。。
0 0
原创粉丝点击