我遇到的jsp 传递参数 出现乱码的情况(项目统一编码utf-8)
今天真是花了不少时间在这个乱码的问题上啊!为防止下次自己或别人再遇到相似的问题浪费过多的精力在这里...
特写下一些统一编码的相关步骤,不常写文章,本文可能写得不怎么好,仅供参考,谢谢
统一各文件的编码格式为UTF-8:
我的jsp文件头部:<%@ page language="java" pageEncoding="UTF-8"%>
(xml文件的头部默认都是: <?xml version="1.0" encoding="UTF-8"?> )
并通过MyEclipse配置jsp文件,js文件的默认文件编码格式为:UTF-8,(点击myeclipse的工具栏上的Window->>Preferences->>General->>Content Types)后
如下如图,在窗口右边寻找相关设置:
如下图底部的红圈:Default encoding: UTF-8 ,最后点击OK,完成设置。
这些设置完后,检查整个项目的编码,选中你的myeclipse项目,右键后出现列表,选择Properties (一般在列表末尾),如果默认的Inherited from container不是UTF-8,则
点击其下面的Other单选按钮,后选择UTF-8:
创建数据库时,设置编码为UTF-8:
CREATE DATABASE `test2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
与mysql数据库连接时url也需要设置统一编码: jdbc:mysql://localhost:3306/db_myName?characterEncoding=UTF-8
做到上面的这几个,已经实现了UTF-8编码的统一了! 如果你存进数据库的中文数据不出现乱码 ,
那 下面的内容就不需要看了...
如果数据库插入中文插入出现了乱码,你可能像我一样粗心而忽略了小细节:
上面基本已经把整个项目的编码都统一了,但我发现我存进数据库的中文数据还是乱码;
我在java实现的DAO层方法那里直接使用”中文数据“存进数据库,发现没有乱码,则说明mysql数据库存中文没问题;
那应该是jsp参数传递方面的问题,
之后,我使用javascript的alert()方法,弹出相关的中文数据,也可以正常显示;
最后多方尝试也没有发现到底是在哪里出现的问题!
直到我看到这里:<form action=“myAction_save”>
看出问题了吗?这里少了:method属性,不写时,默认method=“get”,这是不支持中文传递的!
我们需要一定要记得加上method="post",如: <form action=“myAction_save” method="post">,
就是这么一个细节,需要注意!