• javaweb 中的乱码问题


    一、post 方式

    首先我们看下面一段代码,在该HTML中我们指定的编码为“UTF-8”,如图所示。

    在该代码中,我们将表单数据提交给ParamServlet 处理

    servlet 会将接收到的数据打印到控制台

    控制台会正常显示两个值

    然后输入中文

    提交后显示乱码

    原因分析:

    我们在浏览器输入汉字后,浏览器查UTF-8编码表后,将汉字转化成二进制(一个汉字在UTF-8中占三个字节)

    发送给服务器处理,如果服务器没做任何控制(以tomcat为例),会默认去查ISO8859-1这个码表(一个字节代表一个字符)来解析数据

    iso8859-1里没有那么多字符,有的字在iso8859-1中根本没有对应字符,就用?表示,有对应的就会显示哪些奇怪的字符,就出现了乱码喽,

    所以,解决方案就出来了,我们就明确的通知我们的服务器不用ISO8859-1了,请用UTF-8

    这回就不会乱码了()

    另外  response 与request 相类似

    代码如下:

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

     二、get方式

    以上方案只适用于post方式。因为post方式提交数据,数据在实体内容当中,而get方式提交,数据在url之中

    对于get提交只能手动进行乱码解决

     由于乱码的底层编码没有改变,所以我们将乱码按照ISO8859-1编码回原来的二进制,得到相应字节数组,我们再去查UTF-8码表,将二进制转换成相应字符

    代码如下图:

    注:以上划线代码对于post 和get方式乱码均有效。

  • 相关阅读:
    启动nginx出错:open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory)
    linux vsftpd 550 create directory operation failed解决方法
    如何配置vsftpd
    配置<welcome-file>直接访问请求
    搭建solr集群的时候出现 ./zkcli.sh:行13: unzip: 未找到命令
    使用redis集群中遇到的错误
    存储过程
    查询
    sqlHelper
    一款批量修改AE模板的小工具
  • 原文地址:https://www.cnblogs.com/xiaoduc-org/p/5320855.html
Copyright © 2020-2023  润新知