zoukankan      html  css  js  c++  java
  • Web开发遇到中文乱码[实战]

    1、关于编码常识

    (1)UTF-8国际编码,GBK中文编码。GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立

    (2)Tomcat服务器编码,默认是ISO8859-1

    2、排查路径

    (1)Nginx,如果你的项目有经过Nginx代理

     1 upstream you.domainName.com {
     2     server 127.0.0.1:8081;
     3 }
     4 server {
     5   listen      80;
     6   server_name  you.domainName.com;
     7   charset utf-8; 
     8 
     9   location /examples {
    10       return 403;
    11     }
    12 }

    (2)Tomcat

    找到Tomcat的配置文件

    1 <Server port="8005" shutdown="SHUTDOWN">
    2     <!-- 其他配置  -->
    3     <Service name="Catalina">
    4           <Connector port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" />   
    5           <!-- 其他配置  -->
    6     </Service>
    7 </Server>

    (3)GET

    String productTypeName=request.getParameter("productTypeName");
    byte[] bytes=str.getBytes("ISO-8859-1");
    productTypeName=newString(bytes,"utf-8");

    (4)POST

    request.setCharacterEncoding("utf-8");

    tip:这个是我自己项目遇到的,由于生产是Linux环境,修改了nginx和tomcat,包括post方式都不行,所以怀疑是linux环境下tomcat的问题

    在配置文件/usr/local/tomcat/bin/catalina.sh

    解决办法:修改Tomcat的bin目录下的catalina.sh文件,找到以下代码:

    if [ -z "$LOGGING_MANAGER" ]; then
    JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager "
    else
    JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER"

    修改为

    if [ -z "$LOGGING_MANAGER" ]; then
    JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"
    else
    JAVA_OPTS="$JAVA_OPTS $LOGGING_MANAGER -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"

    这应该是linux初始化没有设置到,既然遇到了做下记录,共勉

  • 相关阅读:
    Mysql集群
    JAVA 经典算法 40 例
    公司面试问题总结
    面试题6
    面试题5
    Java自学-JDK环境变量配置
    mybatis中#{}和${}的区别
    JVM系列(四)— 原子性、可见性与有序性
    JVM系列(三)— Java内存模型
    Java基础拾遗(一) — 忽略的 Integer 类
  • 原文地址:https://www.cnblogs.com/zhuziyu/p/9395568.html
Copyright © 2011-2022 走看看