`

【转】正确设置-Dfile.encoding参数

阅读更多

 

问题:
            项目在本机开发编译打包后发布到法国的服务器,代码中的中文全部乱码,就算是最简单的代码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") 通过当前字符集转码

 

来源:http://hi.baidu.com/sxhyll/blog/item/3f234ab1b1514e5f0823022e.html

分享到:
评论

相关推荐

    confluence---乱码问题.docx

    CATALINA_OPTS="-Dfile.encoding=UTF8 ${CATALINA_OPTS}" ``` - 重启Confluence服务以使更改生效。 #### 四、小工具乱码或不可用 **问题描述**:Confluence中的小工具出现乱码或无法正常使用的情况。 **解决...

    解决Tomcat中文乱码

    - 在`web.xml`中注册这个过滤器,并配置初始化参数`encoding`为`UTF-8`,这样所有经过该过滤器的请求都会被设置为UTF-8编码。 ```xml <filter-name>SetCharacterEncodingFilter</filter-name> <filter-class>...

    eclipse默认编码GBK改为UTF-8

    -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en ``` 这些参数告诉JVM使用UTF-8编码,并设定用户的国家和地区为美国,以确保相关本地化字符串也以UTF-8处理。 2. **设置工作空间编码**: - 启动...

    Centos7缺少字体文件导致activiti图片汉子乱码的问题

    这段配置包含了几个关键的Java属性,如`-Djava.awt.headless=false`确保非无头模式运行,`-Dfile.encoding=UTF-8`设置字符编码为UTF-8,以及`-Dsun.awt.fontCONFIG.enabled=true`和`-Djava.awt.fonts=/usr/share/...

    Java虚拟机_JVM_参数配置

    了解和正确使用-Xbootclasspath参数是Java开发者进阶的必备技能之一,尤其是在大型企业级应用和复杂的开发环境中,调整JVM参数往往能带来显著的性能提升。同时,这也涉及到对Java内存模型、垃圾回收机制以及类加载...

    tomcat字符编码总结

    - **解决方案**: 在过滤器中设置`request.setCharacterEncoding("UTF-8")`,确保所有POST数据都能被正确处理。 **3. 页面链接中传递中文参数** - **问题**: 页面链接中包含中文参数时,由于浏览器默认编码方式与...

    springboot乱码问题解决方案

    <jvmArguments>-Dfile.encoding=UTF-8 这将设置Maven插件的字符编码为UTF-8,解决乱码问题。 三、示例代码 以下是一个简单的示例代码,演示如何在SpringBoot项目中解决乱码问题: @RestController ...

    中文乱码.docx

    综上所述,通过正确设置`file.encoding`参数为UTF-8,可以在很大程度上解决由字符编码不一致导致的中文乱码问题。同时,开发者还应注意在修改配置前进行充分的准备和测试工作,确保系统的稳定性和兼容性。

    idea output 乱码.pdf

    其中,`-Dfile.encoding=UTF-8`是关键,它指定Java虚拟机使用UTF-8字符编码,从而确保输出内容正确显示中文。 2. **配置项目使用容器参数**: 如果你的项目是通过容器(如Tomcat)运行,还需要在容器的配置中指定...

    idea output 乱码.docx

    在IntelliJ IDEA中,你可以通过编辑Tomcat配置来添加 `-Dfile.encoding=UTF-8` 参数。打开Run/Debug Configurations,选择你的Tomcat服务器配置,然后在VM options栏添加这个参数。 3. **修改文档编码**: 在...

    Weblogic内存溢出优化设置

    - `-Dfile.encoding=GBK`:设置文件编码为GBK。 - `-Duser.language=Zh`:设置用户的语言环境为中国语。 - `-Duser.region=CN`:设置用户的地域为中国。 例如,在`startweblogic.sh`文件中,这些参数可以被...

    WEBSPHERE乱码问题的解决和处理

    - **-Dfile.encoding=UTF-8**:设置文件系统的字符编码,这对于读写文件时非常关键。 - **-Duser.language=zh -Duser.country=CN**:设置用户的语言和地区,这对于国际化的应用尤为重要。 - **-Djava.util.logging....

    java.exe和javaw.exe的区别及使用方法

    这里,`-options`可以是各种JVM参数,例如内存设置 `-Xms` 和 `-Xmx`,`className` 是程序的主类名,`jarFile` 是打包的`.jar`文件名,`args...` 是传递给主类的参数。 总之,`java.exe`和`javaw.exe`的选择取决于...

    java常见命令指南

    同样地,将此参数设置为`GBK`可以确保文件中的中文字符被正确处理。 3. **`-Duser.language`**:设置用户的首选语言。将其设置为`zh`(代表中文),可以告诉JVM当前环境的主要语言是中文,从而在需要时加载相应的...

    Java--IDEA控制台输出output中文乱码(csdn)————程序.pdf

    首先,我们需要修改IDEA的启动参数来指定正确的文件编码。IDEA的安装路径通常在`bin`目录下,找到`idea64.exe.vmoptions`文件(如果你使用的是32位系统,则应查找`idea.exe.vmoptions`)。使用文本编辑器打开这个...

    java 中file.encoding的设置详解

    这个属性的值可以在JVM启动时通过命令行参数 `-Dfile.encoding="charset_name"` 来设定,其中`charset_name`是想要使用的字符集名称。如果没有显式设置,JVM会使用操作系统的默认字符集。 在Java代码中,我们可以...

    oracle-java.rar_oracle

    4. **JVM字符集设置**:在启动Java虚拟机(JVM)时,可以使用`-Dfile.encoding=UTF-8`参数设定默认编码为UTF-8。 5. **数据库表和列的字符集**:确保数据库表和列的字符集也能够支持中文。可以通过创建表时指定或...

    tomcat 下catalina.out 日志乱码问题处理

    这里的`JAVA_OPTS`环境变量用于设置Java虚拟机(JVM)的启动参数。`-Dfile.encoding=UTF-8`指示JVM使用UTF-8编码处理文件,包括日志输出;`-Dsun.jnu.encoding=UTF-8`则是设置JNI(Java Native Interface)使用的...

    DDLTask.rar

    6. **JVM设置**:确保Java虚拟机(JVM)的默认编码也是UTF-8,这可以通过在启动JVM时添加`-Dfile.encoding=UTF-8`参数实现。 除了上述方法,有时问题可能出在编译后文件上。"DDLTask.rar"这个压缩包可能包含了用于...

Global site tag (gtag.js) - Google Analytics