zoukankan      html  css  js  c++  java
  • javac对unicode编码的支持程度测试

    试验结论:
    1. javac支持源文件为unicode编码,但是要求文件开头不能带有BOM(Byte Order Marker),否则编译就会失败
    2. 对于系统默认编码不需要添加 -encoding选项,对于Unicode编码需要添加-encoding选项, 具体如下:
        utf8     : -encoding utf8
        utf16le  : -encoding utf-16le
        utf16be : -encoding utf-16be

    试验所使用工具:
    1. notepad++
       notepad++转换编码默认都带有BOM,对于unicode编码,它只能识别带有BOM的unicode文件
    2. uconv
      它能够将一个文件转换为另一种编码,但要求文件不得带有BOM
      简单用法:uconv -f fromEncoding -t toEncoding  -o outputfile inputfile


    测试代码如下:

    // file name : Test.java

     1 package pkg;
     2 
     3 // 注释
     4 public class Test {
     5         final static int value = 1;
     6 
     7         /**
     8          * @param args
     9          */
    10         public static void main(String[] args) {
    11                 // TODO Auto-generated method stub
    12                 System.out.println("hello 世界");
    13         }
    14 

    15 } 

    默认为GBK编码,程序执行正常


    1. 将文件编码改为 utf8 without BOM
    1) 不加 encoding选项
      javac -d . Test.java
      java -classpath .;%CLASSPATH% pkg.Test
      
      打印如下:
    hello 涓栫晫
      
      很显然已经乱码了。
    2) 加上encoding选项
      这时候编译命令改成这个样子:javac -d . -encoding utf8 Test.java
      运行后结果如下:
      hello 世界

    2. 将文件编码改为 utf8(带BOM)
    编译,结果如下:
    Test.java:1: illegal character: \65279
    锘縫ackage pkg;
    ^
    1 error

    3. 将文件编码改为 UTF16LE (带BOM)
    编译:javac -d . -encoding utf-16le Test.java
    编译失败,如下:
    Test.java:1: illegal character: \65279

    4. 将文件编码改为 UTF16LE (不带BOM)
    编译:javac -d . -encoding utf-16le Test.java
    编译通过
    运行结果如下:
    hello 世界

    5. 将文件编码改为 UTF16BE (带BOM)
    编译:javac -d . -encoding utf-16le Test.java
    编译失败,如下:
    Test.java:1: illegal character: \65279

    6. 将文件编码改为 UTF16BE (不带BOM)
    编译:javac -d . -encoding utf-16le Test.java
    编译通过
    运行结果如下:
    hello 世界
  • 相关阅读:
    如何有效的写算法题的几个小tips
    题目
    记录加入博客园,申请开通cnblog
    关于套接字socket程序参数设置
    int main (int argc, const char * argv[0])及指针数组与数组指针
    sleep函数
    signal函数
    C htonl()函数
    位域unsigned char a:4
    关于TCP和UDP的一个理解
  • 原文地址:https://www.cnblogs.com/hdtianfu/p/2804980.html
Copyright © 2011-2022 走看看