渐变2.3+JUnit 4.11=字符集已损坏



在正常情况下,在正确的字节中写入文件,但与Gradle 2.3+JUnit 4.11一起出现意外结果。

import org.junit.Test;
import java.io.FileOutputStream;
import static org.junit.Assert.*;
public class TestUTF16Test
{
   @Test
   public void testWrite() throws Exception
   {
      try (FileOutputStream bin = new FileOutputStream("testUTF16junit.txt")) {
         bin.write("Русский".getBytes("UTF-16LE"));
      }
   }
}

build.gradle

apply plugin: 'java'
sourceCompatibility = 1.7
version = '1.0'
repositories {
    mavenCentral()
}
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

$gradle.bat:clean:测试

:clean
:compileJavawarning: [options] bootstrap class path not set in conjunction with -source 1.7
1 warning
:processResources UP-TO-DATE
:classes
:compileTestJavawarning: [options] bootstrap class path not set in conjunction with -source 1.7
1 warning
:processTestResources UP-TO-DATE
:testClasses
:test
BUILD SUCCESSFUL
Total time: 4.999 secs

结果:

20 04 A0 00 21 04 53 04 21 04 03 04 21 04 03 04... 28 bytes

但它应该是:

20 04 43 04 41 04 41 04 3A 04 38 04 39 04 = 14 bytes

操作系统:Microsoft Windows 7[版本6.1.7601]

Gradle修复

[ compileJava, compileTestJava ]*.options*.encoding = 'UTF-8'

2015,javac无法识别BOM的Unicode!

>javac.exe srctestjavaTestUTF16Test.java
srctestjavaTestUTF16Test.java:1: error: illegal character: 'u00bb'
я╗┐import org.junit.Test;
 ^
1 error
>javac.exe -version
javac 1.8.0_25

现在我明白了IDE为什么不添加BOM。。。

最新更新