文档章节

java乱码解决方案

五大三粗
 五大三粗
发布于 2015/10/15 09:37
字数 531
阅读 18
收藏 0

1: 大家有些时候为系统乱码而烦恼,近期有时间整理了下解决乱码问题:

   一个系统中关于设置编码地方很多: 数据库,项目,平台系统,容器等;
   
   关于应用:
   所有设置编码的地方到最后都得跟JVM 打交道,所以JVM把所有编码都先转换成unicode 码,然后输出时候在相反转换回去,这里是出现乱码根;
   
   例如:一个输入参数以GBK编码,JVM 编译时候  GBK--->unicode, 然后如果输出时候 unicode --->UTF-8(客户端编码) 就可能乱码;所以大家为了
       
        必免有乱码情况,所有都统一编码;
        
   
   以下Linux为例:
   
   JVM 启动参数可以设置有两地方(包括两设置编码属性),第一:全局/etc/profile 文件中 ,容器启动脚本中(tomcat catalina.sh)
   
   具体参数如下:
   
   JAVA_OPTS=" -server -Xms32m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Djava.library.path=/usr/local/lib:$ORACLE_HOME/lib -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300 -Dfile.encoding=GBK";export JAVA_OPTS     
   
   其中file.encoding=GBK ----> JVM 编译参数时候按GBK编成转换成unicode;
   
      sun.jnu.encoding = UTF-8  --->JVM 编译源代码指定的编码(因为JAVA源码没有中文,所以一般不指定);
      
      这两参数可以手动设置:第一/etc/profile ,还可以在容器启动脚本中(tomcat catalina.sh)设置,
      
      如果/etc/profile设置了是所有JAVA进程生效;tomcat catalina.sh 只对某个容器JAVA进程生效(多实例部署时可能用到);
      
      如果两都设置,后者会覆盖前者;如果两者都不设置取profile 文件中设置,如果profile也不设置,找.bash_profile文件中设置, profile ,.bashprofile都不设置 ,取系统安装时候选择的编码;
      
      如果两者中有一者指定了JVM启动编码参数,JVM 不在参考系统编码设置(例profile,.bash_profile 文件中设置变量 export LANG="UTF-8");
      
      
      以上数据可以在Linux 用以下命令查询出来:
      
      ps -au |grep jd-movie //查询某个Linux帐户进程;
      
      jinfo 11229 //可以查看当前JVM进程所有参数变量;

© 著作权归作者所有

共有 人打赏支持
五大三粗
粉丝 160
博文 2264
码字总数 4712446
作品 0
广州
程序员
私信 提问
一例 jvm file.encoding 属性引起的 MapReduce/HBase 乱码问题

1、问题: 最近在往 HBase 写中文的时候,发现 hbase 查出来的数据会有部分中文乱码了,而部分中文又是正常的,按理来说,一般的乱码问题要么全乱,要么不乱。考虑到出现中文的地方都是来源于...

大数据之路
2013/08/28
0
4
tomcat html htm静态文件乱码utf-8的有关问题正文

tomcat html htm 静态文件乱码utf-8 的问题 在tomcat运行的时候很多情况下静态文件包括html css js都是乱码的我从网上搜索出来的解决方案都好像不行. 后来自己仔细的想了一下最终其实就是jav...

longbadx
2014/03/26
0
0
MenuItem 显示中文乱码问题解决方案

MenuItem 显示中文乱码问题解决方案 今天在使用Java做系统托盘图标(TrayIcon),需要为其增加一个右键弹出菜单(PopupMenu),在使用菜单项(MenuItem)时,遇到了一个非常痛苦的事情:中文乱码~...

Java编程思想
2013/10/17
0
0
Tomcat中文乱码问题的原理和解决方法

Tomcat中文乱码问题的原理和解决方法   自从接触Java和JSP以来,就不断与Java的中文乱码问题打交道,现在终于得到了彻底的解决,现将我们的解决心得与大家共享。   一、Java中文问题的由...

孙斐
2013/02/26
0
0
使用Druid解决Oracle Thin驱动中文乱码

问题 使用Oracle Thin驱动比较麻烦的一个问题是容易出现中文乱码,且Thin驱动不像MySQL驱动那样能在链接字符串中指定编码。 2. 思路 最直接的解决方案是对所有数据库中读出的字符串进行编解码...

joshuazhan
2013/03/16
0
4

没有更多内容

加载失败,请刷新页面

加载更多

基于redis的分布式锁

redisson提供了基于redis的分布式锁实现方式,本文就尝试了下锁的使用方式。Redisson同时还为分布式锁提供了异步执行的相关方法,第二节执行介绍。 一、可重入锁验证 同一个jvm里面同一线程的...

noob_chr
17分钟前
3
0
CPU性能过剩提升乏力影响未来行业发展吗?

虽然CPU仍然在不断发展,但是它的性能已经不再仅仅受限于单个处理器类型或制造工艺上了。和过去相比,CPU性能提升的步伐明显放缓了,接下来怎么办,成为横亘在整个行业面前的大问题。 自201...

linux-tao
19分钟前
1
0
设计模式“6”大原则!

面向对象设计原则 概述 对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要...

Java干货分享
36分钟前
7
0
mybatis学习(1)

JDBC连接方式: 1.底层没有使用连接池,操作数据库需要频繁的创建和关闭连接,消耗资源。 2.写原生的JDBC代码在JAVA中,一旦需要修改SQL的话(比如表增加字段),JAVA需要整体重新编译,不利...

杨健-YJ
今天
5
0
怎么组织文档

可以从以下几个方面考虑组织文档: ☐ 各种分支的界面截图和对应的类及文件 ☐ 框架或类图 ☐ 流程图 ☐ 时序图 ☐ 注意事项

-___-
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部