jsp向mysql数据库插入中文乱码 但是读取mysql手动插入的中文时正常

时间:2021-05-06 06:36:02
各位大神请指教 遇到一个别人的项目本人不懂jsp 数据库charset都是utf8 网页编码也是encode(utf8) 再console中都是正常的 插入到数据库中后中文就变成了乱码 使用的是dao.一个函数(参数1,参数2)这样

9 个解决方案

#1


可能mysql的连接  如这样 localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8  没有设置编码

#2


引用 1 楼 fangyuandoit 的回复:
可能mysql的连接  如这样 localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8  没有设置编码

设置了characterEncoding=UTF-8

#3


从前台传到后台的字段转一下码类似这样String str = new String(planFileName.getBytes("ISO8859-1"), "UTF-8");
planFileName就是从前台往后台传的字段

#4


一般从页面传过来的都是ISO8859-1格式的

#5


你后台输出下参数值,先确定是JSP到后台乱码,还是后台到数据库乱码。如果前者,可以在处理器进行转码,如果是后者,看看你的数据库编码和你项目编码是否一致

#6


关键是要找到乱码出现在哪个地方
一般就两个地方:从浏览器提交到服务端、服务端存储到数据库
所以,楼主应该在数据存储之前写一下日志进行调试

#7


最好把jsp的完整代码贴出来!

#8


如果是页面向后台提交的问题就让request调用sendEcord方法
如果是数据库向页面的问题就得看看是不是数据库编码的问题,
我个人推荐的是
<filter>  
      <filter-name>CharacterFilter</filter-name>  
      <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
      <!-- 配置初始化参数 -->  
      <init-param>  
          <param-name>encoding</param-name>  
          <param-value>UTF-8</param-value>  
      </init-param>  
  </filter>  
  <!-- 映射路径 -->  
  <filter-mapping>  
      <filter-name>CharacterFilter</filter-name>  
      <url-pattern>/*</url-pattern>  
  </filter-mapping>    
写在web.xml文件中
mybatis的话可以把URL设置成这样的<property name="url" value="jdbc:mysql://127.0.0.1:3306/phone?useUnicode=true&amp;characterEncoding=utf-8" />
主要是问号以后的

#9


jsp向mysql数据库插入中文乱码 但是读取mysql手动插入的中文时正常,这种问题,应该是request端解码网页发送过来的信息时出现乱码现象,注意request解码默认是ISo-8859-1,比较好的建议是将jsp里面表单的提交方式改为POST方式,那么很容易解决乱码现象,(request.setCharacterEncoding("UTF-8")),你可以将获取到的信息打印出来看·看看是否乱码就能大概确定什么定·地方了

#1


可能mysql的连接  如这样 localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8  没有设置编码

#2


引用 1 楼 fangyuandoit 的回复:
可能mysql的连接  如这样 localhost:3306/mybatis?useUnicode=true&characterEncoding=utf8  没有设置编码

设置了characterEncoding=UTF-8

#3


从前台传到后台的字段转一下码类似这样String str = new String(planFileName.getBytes("ISO8859-1"), "UTF-8");
planFileName就是从前台往后台传的字段

#4


一般从页面传过来的都是ISO8859-1格式的

#5


你后台输出下参数值,先确定是JSP到后台乱码,还是后台到数据库乱码。如果前者,可以在处理器进行转码,如果是后者,看看你的数据库编码和你项目编码是否一致

#6


关键是要找到乱码出现在哪个地方
一般就两个地方:从浏览器提交到服务端、服务端存储到数据库
所以,楼主应该在数据存储之前写一下日志进行调试

#7


最好把jsp的完整代码贴出来!

#8


如果是页面向后台提交的问题就让request调用sendEcord方法
如果是数据库向页面的问题就得看看是不是数据库编码的问题,
我个人推荐的是
<filter>  
      <filter-name>CharacterFilter</filter-name>  
      <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
      <!-- 配置初始化参数 -->  
      <init-param>  
          <param-name>encoding</param-name>  
          <param-value>UTF-8</param-value>  
      </init-param>  
  </filter>  
  <!-- 映射路径 -->  
  <filter-mapping>  
      <filter-name>CharacterFilter</filter-name>  
      <url-pattern>/*</url-pattern>  
  </filter-mapping>    
写在web.xml文件中
mybatis的话可以把URL设置成这样的<property name="url" value="jdbc:mysql://127.0.0.1:3306/phone?useUnicode=true&amp;characterEncoding=utf-8" />
主要是问号以后的

#9


jsp向mysql数据库插入中文乱码 但是读取mysql手动插入的中文时正常,这种问题,应该是request端解码网页发送过来的信息时出现乱码现象,注意request解码默认是ISo-8859-1,比较好的建议是将jsp里面表单的提交方式改为POST方式,那么很容易解决乱码现象,(request.setCharacterEncoding("UTF-8")),你可以将获取到的信息打印出来看·看看是否乱码就能大概确定什么定·地方了