整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

网页乱码,上网必备常识

网页乱码,上网必备常识

页乱码,就是指平时我们打开一个网页它的内容看起来奇奇怪怪,不是正常的中文形态,那会不会是一种特殊的非中文系语言呢?有可能,但是可以分辨!

正常的非中文系语言

中文乱码

那么为什么会发生乱码呢?首先,需要明确以下几点:

1,乱码不是由于你的设备原因导致

2,不只有中文会产生乱码,其它语言也会有乱码

3,乱码的根本原因是因为互联网的原因

互联网方便的把全地球的人们连接在一起,于是网络上的内容可以是任意一种语言产生的,然后当它传播到另外一种语言使用者(比如中文)面前的时候,因为他们所处的互联网环境不同,而计算机又不足够智能的分辨应该以什么样的语言形式展示内容的时候就发生了页面乱码。

那么网页乱码怎么解决呢?同样的,还是需要明确下面几点:

1,遇到网页乱码不要慌,你的设备没有问题

2,网页乱码问题绝对不需要内容阅读者即用户自己解决

3,如果你好奇想自己解决,那么只需要通过搜索引擎搜索关键字:“ie/360/chrome 网页编码设置”,根据出来的内容随便找一篇照着点几次鼠标就可以了!

这篇常识的目的是告诉你,互联网后来是如何解决网页乱码的,也就是前面提到的,网页乱码不需要用户自己解决。

随着互联网越来普及,乱码的问题起初非常的容易发生,当然了,发生的原因也很简单,内容所处的语言环境不同,计算机不知道该怎么显示了。

于是各个国家的网络权威机构就一起组织了一个联盟,专门用来解决网络上内容乱码的问题,并且给这个联盟起了一个名字叫:Unicode

组织建好之后该是商量具体的解决方案了!因为在这之前,每个国家都有自己的语言在计算机中的表示形式(实际就是一张表格),而且随着各国语言的变迁,这张表格还会时不时升级一下。

那怎么办呢?最后,Unicode 组织确定了一种非常便捷的解决方法。就是让各个国家把自己语言在计算机中的表示形式表格,都提交给 Unicode 组织,由 Unicode 组织统一管理,然后把它们都合并到一起形成一张非常大的表格,再交给计算机厂商,在它们出厂计算机的时候默认的把这张巨大的表格都存放到计算机中,这样每台计算机就相当于拥有全世界各种语言的表示形式。

这样当一种语言的内容传播到另外一种语言使用者面前的时候,计算机就能够以某种机制监测到使用者的语种,然后使用对应的表示形式来显示内容,这样就不会发生乱码了。

但是正如我们想象的,这张表格非常的庞大,放到用户的计算机里的时候也是要占用一定的空间呢,所以 Unicode 组织就想办法怎么样尽可能的既能让这张表格表示尽可能多的语言,又能尽可能的小。

于是就出现了“编码”这个概念!编码的本质就是说针对不同的语言,使用的存储空间不一样!比如,汉字和英文字母的占用空间就完全不同,这样就了各种形式的编码方案,网络上被人们熟知的编码方案包括:ASCII,UTF8,GBK,GB2312等,目前国际上最通用的编码方案是UTF8。

现在想必大家都知道乱码的原因了,那么你知道为什么现在我们很少遇到网页乱码了吗?

哈,没错,因为我们的电脑都升级换代了呀 ^_^

最后,大家现在还有遇到网页乱码吗?留言互动吧 ^_^

文乱码问题是比较常见和烦人的问题,本文通过一个小程序介绍了如何通过Servlet从上一个页面获取参数,

方法很简单:调用request.getParameter(String s)方法。

解决中文乱码问题的方法是:

首先要设置response响应的格式:response.setContextType("text/html;charSet=GBK");

然后在加上request.setCharacterEncoding("GBK")

需要注意的是这是解决post方式提交的内容的中文乱码问题。

解决get方式提交内容的中文乱码问题的方法:

在Tomcat->conf文件夹->server.xml-->connecter标签里加上:

URIEncoding="GBK"(注意:在xml里面“=”两边不要有空格)

关于Post和Get之间的区别可以看我转载的另一篇博文:

HTTP POST GET 本质区别详解

例子:

1.threeparams.html


  1. <html>
  2. <body>
  3. <form method="post" action="Threeparams">
  4. <table>
  5. <tr>
  6. <td>
  7. param1
  8. </td>
  9. <td>
  10. <input name="p1" type="text"/>
  11. </td>
  12. </tr>
  13. <tr>
  14. <td>
  15. param2
  16. </td>
  17. <td><input name="p2" type="text"/>
  18. </td>
  19. </tr>
  20. <tr>
  21. <td>
  22. param3
  23. </td>
  24. <td><input name="p3" type="text"/>
  25. </td>
  26. </tr>
  27. <td><input type="submit" value="submit">
  28. </td>
  29. </tr>
  30. </table>
  31. </form>
  32. </body>
  33. </html>

2.ThreeParams.java


  1. import java.io.*;
  2. import javax.servlet.ServletException;
  3. import javax.servlet.http.*;
  4. public class ThreeParams extends HttpServlet{
  5. @Override
  6. protected void doGet(HttpServletRequest req, HttpServletResponse resp)
  7. throws ServletException, IOException {
  8. doPost(req,resp);
  9. }
  10. @Override
  11. protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  12. throws ServletException, IOException {
  13. resp.setContentType("text/html;charset=GBK");
  14. //解决post方式提交内容的中文乱码
  15. //一定要卸载存取第一个参数之前
  16. //不要调用resp.setCharacterEncoding("GBK");
  17. req.setCharacterEncoding("GBK");
  18. //解决get方式乱码问题:修改server.xml中的connector标签-->URIEncoding="GBK"
  19. PrintWriter out=resp.getWriter();
  20. out.println(req.getParameter("p1"));
  21. out.println("</br>");
  22. out.println(req.getParameter("p2"));
  23. out.println("</br>");
  24. out.println(req.getParameter("p3"));
  25. out.println("</br>");
  26. }
  27. }

补充:

上面的这个例子.html中每个name都不一样,如果有多个一样的name时,可以按如下的方法来获取:

1)Enumeration paramNames=request.getParameterNames()

调用此方法获得所有参数的名字,返回一个Enumeration

2) while(paramNames.hasMoreElements()){

String paramName=(String)paramNames.nextElement();

String[] paramValues=request.getParameterValues(paramName);

...

几天有OMI的用户反映,安装OMI时有中文乱码现象,我还说不可能。我们的程序在windows,linux都部署过无数次了,开发时都是UTF8编码的,咋还会乱码呢。结果看了半天也没看出个啥,还是没解决。

最近新安装程序时,新下载了一个tomcat8.5的版本,一跑程序还真是html页乱码了,但JSP页没事。因为之前我们的程序都是跑在tomcat7,最高是tomcat8.0,没试过更高的,高版本确实有问题,且控制台中文也是乱码。

一、尝试了一些网友给的办法,下面说一下解决方案:

1、tomcat\bin\catalina.bat 中添加,

set JAVA_OPTS=-Xms512m -Xms1024m -XX:MaxPermSize=1024m -Dfile.encoding=UTF-8

我的添加位置如图

?前面是正好顺便设置了JVM的内存,解决问题的主要后面的部分。

2、修改tomcat\conf\server.xml,加入 URIEncoding="UTF-8"

加入如图位置

?好象是第一步就可以了,保险起见第二步也加上吧 。

二、关于控制台乱码解决办法:

修改tomcat\conf\logging.properties

#java.util.logging.ConsoleHandler.encoding=UTF-8(GBK)

将UTF-8改为GBK,或者把整行注掉

我是把相关编码全注了

以上,如未解决问题可以加QQ群交流,群名:Kettle实战。