java web乱码问题

问题遇到的现象和发生背景

文字乱码

遇到的现象和发生背景

可以显示出正常页面,但会乱码,应该怎么解决

用代码块功能插入代码
<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="gb2312"%>
<html>
<head>
<title>统计网站访问次数title>
head>
<body>
<form method="post" action="count.jsp" name="form">
请输入姓名:
<input type="text" name="name" size=20><br/>
<input type="submit" value="提交">
form>
body>
html>



<%@ page language="java" contentType="text/html; charset=gb2312" pageEncoding="gb2312"%>
<html>
<head>
<title>统计网站访问次数title>
head> 
<body>
<%!
int count=0;
StringBuffer visitor=new StringBuffer();
public void count(String p){
visitor.append("  "+p);
count++;
}
%>
<%
String name=new String(request.getParameter("name").getBytes("ISO8859-1"),"gb2312");
if(name.length()==0){
%>
<jsp:forward page="SY-3.jsp" /> 
<%
}
count(name);
%> 
<br>目前共有<%=count%>人浏览了本页面,分别是:<br/><%=visitor%> 
body> 
html>



运行结果及详细报错内容

img

我的解答思路和尝试过的方法

把代码该成过utf-8,可以正常显示,但是跳转到第二个页面后会报错,所以需要在线实时交流

我想要达到的结果

解决我的所有问题就好

估计你的项目编码都是utf8的所以你改成utf8才会不乱码,跳转第二个页面的报错是什么呢?可能这个报错和编码没关系

页面问题你要看下服务器的编码是什么。 单独改一个页面的编码为utf-8是静态页面,跳转时还是会根据web服务器的默认编码去编译页面的。 这块可以看下web服务器页面的编码规则是什么样的。

乱码的发生,一般原因是编解码的字符集不统一造成的,提供参考实例,链接:https://www.cnblogs.com/wang-jifeng/p/16099874.html

一般这样的问题让软件反应一会就行了,软件没有把GDK反应好,反应一会儿后,上面会出现一行红的,点中间的那个就可以了,其他没有什么问题,就是得反应一会儿,

ChatGPT尝试为您解答,仅供参考
从你的代码中可以看出,你的页面使用的字符编码是 GB2312,如果你的页面乱码的话,可能是由于字符编码不匹配导致的。首先,你可以检查你的浏览器是否正确设置了 GB2312 编码,以及你的 JSP 页面是否正确保存为 GB2312 编码。你也可以尝试在页面中使用 HTML 头来指定字符编码,例如:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

你可以将这行代码放在页面的 head 中,这样浏览器就会使用 GB2312 编码来解析页面。


另外,在跳转到第二个页面时出现错误,这可能是由于在第二个页面中使用了字符编码不匹配的参数导致的。你可以尝试使用下面的代码来解决这个问题:

String name=new String(request.getParameter("name").getBytes("ISO8859-1"),"gb2312");

这段代码会将从客户端提交的参数转换成 GB2312 编码,从而避免出现乱码的问题。

用UTF-8字符集即可,第二个页面报什么错误呢

我遇到这个问题,必须utf8才能正确输出

把编码全部去掉运行一次, 如果不行的话再一个一个加上utf-8

img

这里编码换成 UTF-8 就可以了

改成UTF-8试试

1、在web.xml中配置:

<filter>
    <filter-name>CharacterEncodingFilter</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>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

2、在SpringMVC配置文件中配置:

<mvc:annotation-driven>
    <mvc:message-converters register-defaults="true">
        <bean class="org.springframework.http.converter.StringHttpMessageConverter">
            <property name="supportedMediaTypes">
                <list>
                    <value>text/html;charset=UTF-8</value>
                </list>
            </property>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>


3、在Tomcat的server.xml中配置:

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443"
           URIEncoding="UTF-8"/>