问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

页面乱码问题怎么解决?

发布网友 发布时间:2022-04-07 09:12

我来回答

2个回答

懂视网 时间:2022-04-07 13:34

yii2页面乱码解决方法:

在数据库配置中配置编码格式就可以了:

<?php

return [
 'class' => 'yiidbConnection',
 'dsn' => 'mysql:host=127.0.0.1; dbname=ohmycto; charset=utf8',
 'username' => 'website',
 'password' => 'mengde1B',
];

推荐:yii使用教程

热心网友 时间:2022-04-07 10:42

1.第一个地方的编码格式为jsp文件的存储格式。Eclipse会根据这个编码格式保存文件。并编译jsp文件,包括里面的汉字。
  第二处编码为解码格式。因为存为UTF-8的文件被解码为iso8859-1,这样如有中文肯定出乱码。也就是必须一致。而第二处所在的这一行,可以没有。缺省也是使用iso8859-1的编码格式。所以如果没有这一行的话,“我是个好人”也会出现乱码。必须一致才可以。
 第三处编码为控制浏览器的解码方式。如果前面的解码都一致并且无误的话,这个编码格式没有关系。有的网页出现乱码,就是因为浏览器不能确定使用哪种编码格式。因为页面有时候会嵌入页面,导致浏览器混淆了编码格式。出现了乱码。
2.表单使用Post方式提交后接收到的乱码问题
这个问题也是一个常见的问题。这个乱码也是tomcat的内部编码格式iso8859-1在捣乱,也就是说post提交时,如果没有设置提交的编码格式,则会以iso8859-1方式进行提交,接受的jsp却以utf-8的方式接受。导致乱码。既然这样的原因,下面有几种解决方式,并比较。
A,接受参数时进行编码转换
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-
8") ; 这样的话,每一个参数都必须这样进行转码。很麻烦。但确实可以拿到汉字。
B,在请求页面上开始处,执行请求的编码代码, request.setCharacterEncoding("UTF-8"),把提交内容的字符集设为UTF-8。这样的话,接受此参数的页面就不必在转码了。直接使用  String str = request.getParameter("something");即可得到汉字参数。但每页都需要执行这句话。这个方法也就对post提交的有效果,对于get提交和上传文件时enctype="multipart/form-data"是无效的。稍后下面单独对这个两个的乱码情况再进行说明。
C,为了避免每页都要写request.setCharacterEncoding("UTF-8"),建议使用过滤器对所有jsp。

现在将常见的乱码问题分为JSP页面显示中文乱码、表单提交乱码两类。

  1)JSP页面中显示中文乱码

  在JSP文件中使用page命令指定响应结果的MIME类型,如<%@ page language="java"

contentType="text/html;charset=gb2312" %>

  2)表单提交乱码

  表单提交时(post和Get方法),使用request.getParameter方法得到乱码,这是因为tomcat处理提交

的参数时默认的是iso-8859-1,表单提交get和post处理乱码问题不同,

  下面分别说明。

  (1)POST处理

  对post提交的表单通过编写一个过滤器的方法来解决,过滤器在用户提交的数据被处理之前被调用

,可以在这里改变参数的编码方式,过滤器的代码如下:

  Java代码

  CharacterEncodingFilter.java:

  public class CharacterEncodingFilter implements Filter

  {

  protected String encoding = null;

  public void init(FilterConfig filterConfig) throws ServletException

  {

  this.encoding = filterConfig.getInitParameter("encoding");

  }

  public void doFilter(ServletRequest request, ServletResponse response, FilterChain

chain) throws IOException, ServletException

  {

  request.setCharacterEncoding(encoding);

  response.setContentType("text/html;charset="+encoding);

  chain.doFilter(request, response);

  }

  }

  web.xml:

  <filter>

  <filter-name>CharacterEncodingFilter</filter-name>

  <filter-class>net.vschool.web.CharacterEncodingFilter</filter-class>

  <init-param>

  <param-name>encoding</param-name>

  <param-value>GBK</param-value>

  </init-param>

  </filter>

  <filter-mapping>

  <filter-name>CharacterEncodingFilter</filter-name>

  <url-pattern>/*</url-pattern>

  </filter-mapping>

   (2) Get方法的处理

  tomcat对post和get的处理方法不一样,所以过滤器不能解决get的乱码问题,它需要在其他地方设

置。

  打开<tomcat_home>\conf目录下server.xml文件,找到对8080端口进行服务的Connector组件的设置

部分,给这个组件添加一个属性:URIEncoding="GBK"。修改后的Connector设置

  为:

  Java代码

  <Connector port="8080" maxHttpHeaderSize="8192"

  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

  enableLookups="false" redirectPort="8443" acceptCount="100"

  connectionTimeout="20000" disableUploadTimeout="true" <SPAN style="COLOR:

#ff0000">URIEncoding="GBK"</SPAN> />

  <Connector port="8080" maxHttpHeaderSize="8192"

  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

  enableLookups="false" redirectPort="8443" acceptCount="100"

  connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" />

  *注意修改后重新启动tomcat才能起作用。

  /***********************************************************过滤器的使用

*******************************************************/

  3,表单get提交方式的乱码处理方式。

  如果使用get方式提交中文,接受参数的页面也会出现乱码,这个乱码的原因也是tomcat的内部编码

格式iso8859-1导致。Tomcat会以get的缺省编码方式iso8859-1对汉字进行编码,编码后追加到url,导

致接受页面得到的参数为乱码/、。

  解决办法:

  A,使用上例中的第一种方式,对接受到的字符进行解码,再转码。

  B, Get走的是url提交,而在进入url之前已经进行了iso8859-1的编码处理。要想影响这个编码则

需要在server.xml的Connector节点增加useBodyEncodingForURI="true"

  属性配置,即可控制tomcat对get方式的汉字编码方式,上面这个属性控制get提交也是用

request.setCharacterEncoding("UTF-8")所设置的编码格式进行编码。所以自动编码为

  utf-8,接受页面正常接受就可以了。

  但我认为真正的编码过程是,tomcat又要根据

  <Connector port="8080"

  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

  enableLookups="false" redirectPort="8443" acceptCount="100"

  debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"

  disableUploadTimeout="true" URIEncoding=”UTF-8”/>

  里面所设置的URIEncoding=”UTF-8”再进行一次编码,但是由于已经编码为utf-8,再编码也不会

有变化了。如果是从url获取编码,接受页面则是根据URIEncoding=”UTF-8”来

  进行解码的。

  4,上传文件时的乱码解决

  上传文件时,form表单设置的都是enctype="multipart/form-data"。这种方式以流方式提交文件。

如果使用apach的上传组件,会发现有很多乱码想象。这是因为apach的先期

  commons-fileupload.jar有bug,取出汉字后进行解码,因为这种方式提交,编码又自动使用的是

tomcat缺省编码格式iso-8859-1。但出现的乱码问题是:句号,逗号,等特殊符号

  变成了乱码,汉字如果数量为奇数,则会出现乱码,偶数则解析正常。

  解决方式:下载commons-fileupload-1.1.1.jar这个版本的jar已经解决了这些bug。

  但是取出内容时仍然需要对取出的字符进行从iso8859-1到utf-8转码。已经能得到正常所有汉字以

及字符。

  5,Java代码关于url请求,接受参数的乱码

  url的编码格式,取决于上面所说的URIEncoding=”UTF-8”。如果设定了这个编码格式,则意味着

所有到url的汉字参数,都必须进行编码才可以。否则得到的汉字参数值都是乱

  码,例如

  一个链接Response.sendDerect(“/a.jsp?name=张大维”);而在a.jsp里面直接使用

  String name = request.getParameter("name");得到的就是乱码。因为规定了必须是utf-8才可以

,所以,这个转向应该这样写:

  Response.sendDerect(“/a.jsp?name=URLEncode.encode(“张大维”,”utf-8”);才可以。

  如果不设置这个参数URIEncoding=”UTF-8”,会怎么样呢?不设置则就使用了缺省的编码格式

iso8859-1。问题又出来了,第一就是参数值的个数如果是奇数个数,则就可以正

  常解析,如果使偶数个数,得到最后字符就是乱码。还有就是如果最后一个字符如果是英文,则就

能正常解析,但中文的标点符号仍出现乱码。权宜之计,如果您的参数中没有中

  文标点符号,则可以在参数值最后加一个英文符号来解决乱码问题,得到参数后再去掉这个最后面

的符号。也可以凑或使用。

  6,脚本代码关于url请求,接受到的参数乱码

  脚本中也会进行页面转向的控制,也会涉及到附带参数,并在接受页面解析这个参数的情况。如果

这个汉字参数不进行URIEncoding=”UTF-8”所指定的编码处理,则接受页面接受

  到的汉字也是乱码。脚本处理编码比较麻烦,必须有相应的编码脚本对应文件,然后调用脚本中的

方法对汉字进行编码即可。

  7,关于jsp在MyEclipse中打开的乱码问题

  对于一个已经存在的项目,Jsp文件的存储格式可能是utf-8。如果新安装的eclipse,则缺省打开使

用的编码格式都是iso8859-1。所以导致jsp里面的汉字出现乱码。这个乱码比

  较容易解决,直接到eclipse3.1的偏好设置里面找到general-〉edidor,设置为您的文件打开编码

为utf-8即可。Eclipse会自动重新以新的编码格式打开。汉字即可正常显示。

  8,关于html页面在eclipse中打开出现乱码情况

  由于大部分页面都是由dreamweaver制作,其存储格式跟eclipse的识别有差别导致。

  一般这种情况,在eclipse中新建一个jsp,直接从dreamweaver复制页面内容粘贴到jsp即可

  但我认为真正的编码过程是,tomcat又要根据

  <Connector port="8080"

  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

  enableLookups="false" redirectPort="8443" acceptCount="100"

  debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"

  disableUploadTimeout="true" URIEncoding=”UTF-8”/>

  里面所设置的URIEncoding=”UTF-8”再进行一次编码,但是由于已经编码为utf-8,再编码也不会

有变化了。如果是从url获取编码,接受页面则是根据URIEncoding=”UTF-8”来进行解码的。

 4,上传文件时的乱码解决

  上传文件时,form表单设置的都是enctype="multipart/form-data"。这种方式以流方式提交文件。

如果使用apach的上传组件,会发现有很多乱码想象。这是因为apach的先期

  commons-fileupload.jar有bug,取出汉字后进行解码,因为这种方式提交,编码又自动使用的是

tomcat缺省编码格式iso-8859-1。但出现的乱码问题是:句号,逗号,等特殊符号

  变成了乱码,汉字如果数量为奇数,则会出现乱码,偶数则解析正常。

  解决方式:下载commons-fileupload-1.1.1.jar这个版本的jar已经解决了这些bug。

  但是取出内容时仍然需要对取出的字符进行从iso8859-1到utf-8转码。已经能得到正常所有汉字以

及字符。

  5,Java代码关于url请求,接受参数的乱码

  url的编码格式,取决于上面所说的URIEncoding=”UTF-8”。如果设定了这个编码格式,则意味着

所有到url的汉字参数,都必须进行编码才可以。否则得到的汉字参数值都是乱

  码,例如

  一个链接Response.sendDerect(“/a.jsp?name=张大维”);而在a.jsp里面直接使用

  String name = request.getParameter("name");得到的就是乱码。因为规定了必须是utf-8才可以

,所以,这个转向应该这样写:

  Response.sendDerect(“/a.jsp?name=URLEncode.encode(“张大维”,”utf-8”);才可以。

  如果不设置这个参数URIEncoding=”UTF-8”,会怎么样呢?不设置则就使用了缺省的编码格式

iso8859-1。问题又出来了,第一就是参数值的个数如果是奇数个数,则就可以正

  常解析,如果使偶数个数,得到最后字符就是乱码。还有就是如果最后一个字符如果是英文,则就

能正常解析,但中文的标点符号仍出现乱码。权宜之计,如果您的参数中没有中

  文标点符号,则可以在参数值最后加一个英文符号来解决乱码问题,得到参数后再去掉这个最后面

的符号。也可以凑或使用。

  6,脚本代码关于url请求,接受到的参数乱码

  脚本中也会进行页面转向的控制,也会涉及到附带参数,并在接受页面解析这个参数的情况。如果

这个汉字参数不进行URIEncoding=”UTF-8”所指定的编码处理,则接受页面接受

  到的汉字也是乱码。脚本处理编码比较麻烦,必须有相应的编码脚本对应文件,然后调用脚本中的

方法对汉字进行编码即可。

  7,关于jsp在MyEclipse中打开的乱码问题

  对于一个已经存在的项目,Jsp文件的存储格式可能是utf-8。如果新安装的eclipse,则缺省打开使

用的编码格式都是iso8859-1。所以导致jsp里面的汉字出现乱码。这个乱码比

  较容易解决,直接到eclipse3.1的偏好设置里面找到general-〉edidor,设置为您的文件打开编码

为utf-8即可。Eclipse会自动重新以新的编码格式打开。汉字即可正常显示。

  8,关于html页面在eclipse中打开出现乱码情况

  由于大部分页面都是由dreamweaver制作,其存储格式跟eclipse的识别有差别导致。

  一般这种情况,在eclipse中新建一个jsp,直接从dreamweaver复制页面内容粘贴到jsp即可

  在使用JSP的过程中,最使人头疼的一个问题就是中文乱码问题,以下是我在软件开发中遇到的乱码

问题以及解决方法。

  1、JSP页面乱码

  这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要在页面开始地方用下

面代码指定字符集编码即可,<%@ page contentType="text/html; charset=utf

  -8" %>

  2、数据库乱码

  这种乱码会使你插入数据库的中文变成乱码,或者读出显示时也是乱码,解决方法如下:

  在数据库连接字符串中加入编码字符集

  String Url="jdbc:mysql://localhost/digitgulf?

user=root&password=root&useUnicode=true&characterEncoding=utf-8";

  并在页面中使用如下代码:

  response.setContentType("text/html;charset=utf-8");

  request.setCharacterEncoding("utf-8");

  3、中文作为参数传递乱码

  当我们把一段中文字符作为参数传递个另一页面时,也会出现乱码情况,解决方法如下:

  在参数传递时对参数编码,比如

  RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords)

  然后在接收参数页面使用如下语句接收

  keywords=new String(request.getParameter("keywords").getBytes("8859_1"));

  以上为现阶段遇到的乱码问题,乱码的核心问题还是字符集编码问题,我之前也就是被页面的乱码给困惑了很久感觉这个还是挺有用的就给大家分享下。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 医疗保险账户怎么使用范围 吉林省医保卡使用范围是什么 医保使用范围 萝卜香菇排骨汤的做法 排骨青萝卜香菇可以做汤吗 请问萝卜与香菇能同时吃吗? 炖排骨料包孕妇能吃吗 山药香菇炖排骨孕妇能吃吗 我是个孕妇,上火了,牙龈肿痛可以喝香菇排骨汤吗 萝卜和香菇能同吃吗 为什么做梦时梦到一个人,醒来之后对她会有种特别的感觉? 做梦经常梦到一个人,这个被梦到的人会有感应吗? 想念一个人或者梦到一个人的时候,那个人会有感应吗? 经常梦到一个人对方会有感应吗 墙面装修纠结客厅墙面的颜色,究竟刷什么颜色的漆好? 地板是灰色的,那装修的时候墙面应该选择什么颜色? 家庭装修墙面用什么颜色显得亮 不同房间颜色选择 请问广东那里田螺最多? 未激活的招商银行信用卡连同身份证一起丢失,我办了注销,会不会有损失? 哪里产田螺的量多 迷你世界小技巧 熊猫如何驯服和养殖 迷你世界:小黑想驯服熊猫用竹子可以吗? 如何批量制作邀请函 《迷你世界》熊猫怎么驯服方法 迷你世界黑龙怎么驯服 迷你世界怎样杀死驯服了的熊猫? 如何把excel表里的家庭成员信息导入word 迷你世界怎么杀驯服的熊猫 石英石灶台面多少钱一米 你好,华为HUAWEI nova 7可以自己刷机吗? 做灶台的石英石台面多少钱一平方 一般瓷砖做的灶台要多少钱一米 用不锈钢做灶台好不?一般多少钱一米? 厨房灶台多少钱一米 石英石一米140元,宽58公分的灶台面一平方多少钱?如何计算 做一个两米的厨房台面要多少钱 装修厨房灶台一米多少钱? 厨房灶台板一般多少钱 橱柜的台面多少钱一米 304不锈钢橱柜多少钱一米比较好? 一般铺个大理石厨房灶台得多少钱