正确设置-Dfile.encoding参数

正确设置-Dfile.encoding参数

摘自:https://blog.csdn.net/youge/article/details/6178265

2011年02月11日 10:18:00 阅读数:1889 标签: java服务器虚拟机tomcat语言jdk 更多

个人分类: java

问题:
            项目在本机开发编译打包后发布到法国的服务器,代码中的中文全部乱码,就算是最简单的代码System.out.println("中文"),打印出来的也是乱码。

代码在本地的服务器测试都正常。

法国服务器的环境:window 2003 中文版。

解决:

在网友imasmallbird的指引下,发现是2个服务器的file.encoding的不同,本地服务器是GBK,而法国服务器是Cp1252,所以会产生乱码。

把法国服务器的区域设置改成中国后,file.encoding就变成GBK,这样可以解决这个问题,但因为很多原因不能直接改区域设置,比如改了区域设置后时间就不是法国时间。

目前解决办法如下:
1. 本地编译打包不用变,本地编译采用的是GBK编译的(默认采用系统字符集编译)

2. 在法国服务器的tomcat上加上JAVA的启动参数 -Dfile.encoding=GBK

重启tomcat,一切正常了。

解决了该问题后,顺便找了些JAVA的中文乱码的资料看了下,简单的总结下:

从Java 源代码到得到正确的结果,要经过 “Java 源代码-> Java 字节码-> 虚拟机->操作系统->显示设备”的过程。在上述过程中的每一步骤,我们都必须正确地处理中文的编码,才能够使最终显示正确的结果。

"Java 源代码-> Java 字节码":该阶段就是调用javac 进行编译的阶段,javac默认采用系统字符集,比如我们本地机器急就是GBK,如果想用其他的编码,比如UTF-8,可以加上 -encoding UTF-8

"Java 字节码-> 虚拟机->操作系统" :该阶段首先需要JRE或者JDK支持多语言(下载JRE的时候会让你选择英文版还是多语言版),然后就是虚拟机启动的时候使用什么字符集,默认也是采用 当前系统的字符集,如需要修改字符集,加上JAVA的启动参数,-Dfile.encoding=GBK

"操作系统->显示设备":该阶段主要就是需要操作系统支持显示中文就可以,就是安装了中文字体。

看到这里后重新看我们的乱码问题,我们在本地编译(Java 源代码-> Java 字节码 阶段)默认采用了GBK字符集,而"Java 字节码-> 虚拟机->操作系统" 阶段是在法国服务器上进行,也是采用了默认的字符集,但这里的默认字符集确实Cp1252,因字符集不一致,所以就会乱码。

System.getProperty("file.encoding")   得到当前系统字符集
content.getBytes(System.getProperty("file.encoding")),"GBK") 通过当前字符集转码

原文地址:https://www.cnblogs.com/LiuYanYGZ/p/9568959.html

时间: 2024-11-09 00:39:48

正确设置-Dfile.encoding参数的相关文章

如何正确设置session_cached_cursors参数

转载自:http://blog.itpub.net/20542911/viewspace-624681 正确设置open_cursors和'session_cached_cursors'  可以减少sql解析,提高系统性能,那么,如何正确设置'session_cached_cursors'  这个参数呢?我们可以把握下面的原则: 1.'session_cached_cursors'  数量要小于open_cursor 2.要考虑共享池的大小 3.使用下面的sql判断'session_cached

配置tomcat启动参数-Dfile.encoding=UTF-8后,IDEA控制台乱码

配置tomcat启动参数-Dfile.encoding=UTF-8后,IDEA控制台出现乱码 解决方法: 在idea的bin目录(如:D:\JetBrains\IntelliJ IDEA 2018.1.4\bin)下找到idea.exe.vmoptions和idea64.exe.vmoptions两个文件 文件的内容大致如下,是jvm参数 编辑这两个文件在文件中增加一行-Dfile.encoding=UTF-8 重启IDEA即可 原文地址:https://www.cnblogs.com/niuz

java 乱码问题-Dfile.encoding=UTF-8

http://blog.csdn.net/telnetor/article/details/5555361 问题描述:程序涉及到国际化问题,httpclient抓回来的数据乱七八糟的乱码,在转了几次编码之后在Myeclipse下可以获取正常编码的源码(准确的说是能显示一大部分,少部分内容依然乱码),但是将程序移植到eclipse下先前的程序就出现了乱码(移植工作曾经尝试过以下几种形式:1,程序从myeclipse中导出,然后再从Eclipse中导入:2,将Eclipse工作空间切换到myecli

【转】正确设置php-fpm子进程用户,提高网站安全性防挂马

原文地址:http://www.myhack58.com/Article/60/61/2013/37209.htm 根据生产环境不断反馈,发现不断有 PHP网站被挂木马,绝大部分原因是因为权限设置不合理造成.因为服务器软件,或是 php 程序中存在漏洞都是难免的,在这种情况下,如果能正确设置 Linux 网站目录权限, php 进程权限,那么网站的安全性实际上是可以得到保障的. 那么,造成网站被挂木马的原因是什么? ftp 连接信息被破解,对这个原因,可行的办法就是使用非常复杂的FTP 用户名(

IIS下PHP rewrite重写设置(支持中文参数)实例

IIS环境下PHP重写设置 支持中文参数. 在网站根目录下加入:Web.Config: <?xml version="1.0" encoding=”UTF-8″?> <configuration> <system.webServer> <rewrite> <rules> <rule name="cnUrl" stopProcessing="true"> <match u

正确设置Linux的ulimit值的方法

学习swoole的时候有一个max_conn参数, max_conn 描述:服务器允许维持的最大TCP连接数 说明:设置此参数后,当服务器已有的连接数达到该值时,新的连接会被拒绝.另外,该参数的值不能超过操作系统ulimit -n的值,同时此值也不宜设置过大,因为swoole_server会一次性申请一大块内存用于存放每一个connection的信息.这个值也会影响服务器的最大并发数,其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器很容易就达到这个数量.

python 读不同编码的文本,传递一个可选的encoding 参数给open() 函数

文件的读写操作默认使用系统编码,可以通过调用sys.getdefaultencoding() 来得到.在大多数机器上面都是utf-8 编码.如果你已经知道你要读写的文本是其他编码方式,那么可以通过传递一个可选的encoding 参数给open() 函数.如下所示:with open('somefile.txt', 'rt', encoding='latin-1') as f:...Python 支持非常多的文本编码.几个常见的编码是ascii, latin-1, utf-8 和utf-16.在w

双主,主从同步设置的重要参数log_slave_updates

说明:最近部署了mysql的集群环境,详细如下M01和M02为主主复制,M01和R01为主从复制:在测试的过程中发现了以下问题: 1.M01和M02的主主复制是没有问题的(从M01写入数据能同步到M02,从M02写入数据能够同步到M01); 2.主从同步的时候,当从M01写入的时候,数据可以写入到R01: 3.当从M02写入的时候,数据就不能写入到R01: 问题的原因:log_slave_updates参数的状态为NO mysql的官网说明如下: Normally, a slave does n

如何正确设置 Informix GLS 及 CSDK 语言环境

本文介绍 GLS 相关知识,说明如何正确设置 Informix GLS 语言环境相关变量(DB_LOCALE,CLIENT_LOCALE),保证 Informix 数据库服务器.客户端能正确的支持中文字符和支持使用中文的对象名.说明在 CSDK 2.7 以上版本(当前最新版本为 CSDK 3.5)中对语言环境设置的要求.以及举例说明语言环境设置常见错误及解决办法. 概述 IBM Informix 产品可以支持许多语言.文化和代码集.所有特定于文化的信息汇集于单个环境中,称为 Global Lan