VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 800|回复: 7

页面乱码问题,高手请帮忙!

[复制链接]

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-1-29 23:00:01 | 显示全部楼层 |阅读模式
<%@ page pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib uri="/tags/struts-tiles" prefix="tiles" %>
<%@ taglib uri="/tags/struts-nested" prefix="nested"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TESTSTRUTS</title>
</head>
<body>

<html:form action="/hello">
用户帐号:<html:text property="userName"/><html:errors property="userName"/><br/>
用户密码:<html:text property="userPasswrd"/><html:errors property="userPasswrd"/><br/>
<html:submit value="提交"/><html:cancel value="取消"/>
</html:form>
<logic:present name="personbean" scope="request">
<h1>
<bean:message key="hello.jsp.page.hello"/>
<bean:write name="personbean" property="userName"/>
</h1>
<h2>
<bean:write name="personbean" property="userPasswrd"/>
</h2>
</logic:present>
</body>
</html>

结果是:“用户名称:”变成了“鐢ㄦ埛甯愬彿锛&#65533;”
请问是什么原因?查了很多资料了!没有解决!
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-3-6 05:15:01 | 显示全部楼层
自己顶一下吧
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-3-6 19:30:01 | 显示全部楼层
试试gb2312呢
回复

使用道具 举报

0

主题

9

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-3-8 11:00:02 | 显示全部楼层
1.编码问题:
  (1)首先确定JSP页面头部是否有:<%@ page contentType="text/html; charset=GBK" %>
  (2)类似这样的转码:
     String param= new String(request.getParameter("param").getBytes("ISO-8859-1"), "GBK");
  (3)添加filter字符过滤器,具体做法:

      先添加类:

import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
import java.io.IOException;
import org.apache.log4j.Logger;
import java.net.URLEncoder;

/** *//**
* 请求中中文字符串过滤类
*/

public class SetEncodingFilter
    implements Filter ...{
  private Logger logger=Logger.getLogger(this.getClass());

  public void init(FilterConfig filterConfig) throws ServletException ...{
  }

  public void doFilter(ServletRequest request, ServletResponse response,
                       FilterChain chain) throws IOException, ServletException ...{
    logger.info("请求转码过滤器===================");
    request.setCharacterEncoding("gb2312");
    chain.doFilter(request,response);
  }

  public void destroy() ...{
  }
}
     再注册类到XML里:

  <filter>
    <filter-name>Set Encoding</filter-name>
    <filter-class>SetEncodingFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>Set Encoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>


  (4)如果是通过"a.jsp?param=中文"传递参数,则需要:
     a.在传参数之前先把参数进行转码:java.net.URLEncoder.encode(param);
       取值用java.net.URLDncoder.dncode(param);再转回中文
     b.在你的Tomcat目录-->conf目录-->server.xml里找出这段:

       <Connector
port="8080"               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" <!--在里边加上这个参数-->URIEncoding="gb2312"
/>


  (5)数据库乱码,首先确定你在插入数据库之前是中文,解决办法:

     在数据库的数据库连接URL中加上useUnicode=true&characterEncoding=GBK就OK了。

     如果在读取的时候出现乱码用第二种方法解决.

http://blog.csdn.net/lip009/archive/2006/09/07/1192022.aspx#521755
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-4-7 20:15:02 | 显示全部楼层
学习
回复

使用道具 举报

0

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-4-8 16:15:01 | 显示全部楼层
换成这个试试
<%@ page contentType="text/html; charset=gb2312" language="java"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
回复

使用道具 举报

0

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-4-10 22:45:01 | 显示全部楼层
出现这种情况是不是个别的?
如果是个别的(也就是说,其他的jsp  显示正常)那么我建议你
String param= new String(request.getParameter("param").getBytes("ISO-8859-1"), "UTF-8");
因该就可以了
回复

使用道具 举报

0

主题

7

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-4-11 10:45:01 | 显示全部楼层
在你往前台返回结果前,通过String str= new String(str.getBytes("ISO-8859-1"))处理一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表