java项目编码设置

本文探讨了Java项目中编码设置的重要性,包括.java文件的编码、javac编译器的编码参数以及java运行时的file.encoding参数。通过四个示例说明了文件编码与javac编码必须一致,而java命令的编码可以灵活,但建议与前两者统一,以避免乱码问题和方便记忆。此外,当处理输入流时,Charset.defaultCharset()的作用和选择合适的编码对于防止乱码至关重要。
摘要由CSDN通过智能技术生成

javac和java 命令是我们最熟悉的,javac有个参数-encoding ?,用于.java文件以何种编码方式编译成.class文件;java 有个参数-D'file.encoding=?' ,用于.class文件以何种编码方式运行;还有我们的.java文件自身也有编码方式。默认情况下 javac和java 都是GBK
UTF8.java  文件编码方式为UTF-8:

[Java] 纯文本查看 复制代码
?
1
2
3
4
5
6
7
import java.nio.charset.Charset;
public class UTF8{
      public static void main(String[] args) {
           System.out.println("file.encoding=" + System.getProperties().getProperty("file.encoding"));
           System.out.println("默认是:"+Charset.defaultCharset().name());
    }
  }


GBK.java  文件编码方式为GBK:

[Java] 纯文本查看 复制代码
?
1
2
3
4
5
6
7
  import java.nio.charset.Charset;
public class GBK{
         public static void main(String[] args) {
                 System.out.println("file.encoding=" + System.getProperties().getProperty("file.encoding"));
                System.out.println("默认是:"+Charset.defaultCharset().name());
          }
    }


注:System.getProperties().getProperty("file.encoding")和Charset.defaultCharset().name()都是返回java命令的编码方式。

列1:

 

文件编码和javac命令编码都是GBK,程序运行没问题。

列2:

 

文件编码和javac命令编码都是UTF-8 ,程序运行没问题。

列3:

 

文件编码UTF-8和javac命令编码GBK,中文乱码。

列4
 
文件编码GBK和javac命令编码UTF-8,编译不通过。
通过上面4个列子可以看出:文件编码和javac命令编码一定要一样,java命令编码方式随意。但是当程序读取文件、网络请求数据等情况下,会存在将输入流转成子符串的情况,这时就可能用到Charset.defaultCharset(),Charset.defaultCharset()获取的是java命令编码方式。虽然java命令编码方式随意,但是最好和其它两种编码一样,目的是为了方便记忆。


如:同一个.class 在不同java命令编码方式下,会出现不同的结果。


Test.java文件编码方式GBK

[Java] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.io.BufferedReader;
import java.io.FileReader;
import java.nio.charset.Charset;
 
public class Test
{
    public static void main(String[] args) throws Exception {
        System.out.println("file.encoding=" + System.getProperties().getProperty("file.encoding"));
        System.out.println("默认是:" + Charset.defaultCharset().name());
 
        FileReader fileReader = new FileReader("C:/UTF8.java");//UTF8.java 编码方式UTF-8
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        StringBuilder stringBuilder = new StringBuilder();
        String temp = null;
        while ((temp = bufferedReader.readLine()) != null) {
            stringBuilder.append(temp);
        }
 
        System.out.println(stringBuilder.toString());
 
        bufferedReader.close();
        fileReader.close();
 
    }
}

 

idea Maven项目:

文件编码设置:

file->setting

javac命令编码设置:

pom.xml

更多学习资料可关注:annalin1203


java命令编码设置:



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值