Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别相关的知识,希望对你有一定的参考价值。

1通过java写文件时文件名编码和System.getProperty("sun.jnu.encoding")有关,打印此环境属性发现输出竟然是ANSI的一种编码,终于找到问题爆发点,通过在程序中设置System.setProperty("sun.jnu.encoding","utf-8")解决问题。

2通过问题解决得出结论:sun.jnu.encoding 影响文件名的创建,而 file.encoding 则影响到文件内容。
3所以说,在我们使用 Java 处理中文文件的时候,如果发现文件的中文内容没有乱码,而文件的中文名发生乱码,我们就应当多考虑一下 sun.jnu.encoding 和 file.encoding 的区别了。
参考技术A 有种说法
sun.jnu.encoding 影响文件名的创建,而 file.encoding 则影响到文件内容。
http://happygiraffe.net/blog/2009/09/24/java-platform-encoding/本回答被提问者和网友采纳

需要将路径设置为 java 项目的系统属性

【中文标题】需要将路径设置为 java 项目的系统属性【英文标题】:Need to set path as a system property for java project 【发布时间】:2013-11-15 06:06:35 【问题描述】:

我有 2 个属性文件,它们是我的 java eclipse 项目的一部分。现在我需要将这两个文件的路径作为-Dpath1="pathfile1" 之类的系统属性传递,因为项目只会接受它作为系统属性。 一种选择是我可以指定绝对路径,但我想指定相对于我的项目的路径,例如-Dpath1=$Project_Dir/resource/file1。原因是,如果项目目录被移动,那么项目将开始失败。

我正在使用 eclipse 来运行这个项目,并且不想声明任何新的系统变量来支持相对路径,所以例如不想创建一个新的系统变量 Project_Dir 。是否有可能实现这一目标以及如何实现?

【问题讨论】:

【参考方案1】:

是的,你可以做到。Eclipse 有内置的 Path 变量 PROJECT_LOC,它存储项目文件夹的位置,例如c:\工作区\项目1。 您可以在启动配置中使用此属性。

【讨论】:

【参考方案2】:

您可以通过以下方式设置系统属性:

System.setProperty("path1", yourPathHere);

现在,您只需构建正确的路径,相对于您的项目所在的位置。为此,请从项目的位置开始:How to get the path of a running JAR file?

【讨论】:

【参考方案3】:

使用setProperty 时,如果使用纯相对路径,则可以引用内部项目文件。

例如引用位于 /abc/def/workspace/project/lib/driver.exe 的文件:

System.setProperty("driver", "lib/driver.exe");

这很简单。

【讨论】:

以上是关于Java 的系统属性 sun.jnu.encoding 和 file.encoding 的区别的主要内容,如果未能解决你的问题,请参考以下文章

需要将路径设置为 java 项目的系统属性

如何在 OS X 上全局设置 java 系统属性?

在Java中获取系统属性

JAVA系统属性之user home

通过 Gradle 运行 Java 类时传递系统属性和参数的问题

通过 Gradle 运行 Java 类时传递系统属性和参数的问题