gpt4 book ai didi

java - Gradle 2.3 + JUnit 4.11 = 损坏的字符集

转载 作者:行者123 更新时间:2023-12-01 11:51:31 25 4
gpt4 key购买 nike

正常情况下可以将正确的字节写入文件,但结合 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"));
}
}
}

构建.gradle

apply plugin: 'java'

sourceCompatibility = 1.7
version = '1.0'

repositories {
mavenCentral()
}

dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
}

$ gradle.bat:干净:测试

: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 src\test\java\TestUTF16Test.java
src\test\java\TestUTF16Test.java:1: error: illegal character: '\u00bb'
я╗┐import org.junit.Test;
^
1 error

>javac.exe -version
javac 1.8.0_25

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

关于java - Gradle 2.3 + JUnit 4.11 = 损坏的字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28788754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com