Skip to content

Commit b9026dd

Browse files
Merge pull request eugenp#11962 from alemoles/master
BAEL-5429 - How to Fix Java Compiler Error: Illegal Character (eugenp#9)
2 parents 9cd8524 + 16e777a commit b9026dd

3 files changed

Lines changed: 90 additions & 0 deletions

File tree

core-java-modules/core-java/pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,16 @@
5959
<artifactId>spring-core</artifactId>
6060
<version>${spring.core.version}</version>
6161
</dependency>
62+
<dependency>
63+
<groupId>commons-io</groupId>
64+
<artifactId>commons-io</artifactId>
65+
<version>${commons-io.version}</version>
66+
</dependency>
67+
<dependency>
68+
<groupId>com.google.gdata</groupId>
69+
<artifactId>core</artifactId>
70+
<version>1.47.1</version>
71+
</dependency>
6272
</dependencies>
6373

6474
<build>
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package com.baeldung.illegalcharacter;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertNotEquals;
5+
6+
import java.io.BufferedReader;
7+
import java.io.IOException;
8+
import java.io.InputStream;
9+
import java.io.InputStreamReader;
10+
import java.io.Reader;
11+
import java.util.Objects;
12+
13+
import org.apache.commons.io.ByteOrderMark;
14+
import org.apache.commons.io.input.BOMInputStream;
15+
import org.junit.Test;
16+
17+
import com.google.gdata.util.io.base.UnicodeReader;
18+
19+
public class IllegalCharacterUnitTest {
20+
21+
final String RESOURCE_FILE_NAME = "bom-file.txt";
22+
final InputStream ioStream = this.getClass()
23+
.getClassLoader()
24+
.getResourceAsStream(RESOURCE_FILE_NAME);
25+
final String expected = "Hello world with BOM.";
26+
27+
@Test
28+
public void whenInputFileHasBOM_thenUseInputStream() throws IOException {
29+
String line;
30+
String actual = "";
31+
32+
try (BufferedReader br = new BufferedReader(new InputStreamReader(ioStream))) {
33+
while ((line = br.readLine()) != null) {
34+
actual += line;
35+
}
36+
}
37+
38+
assertNotEquals(expected, actual);
39+
}
40+
41+
@Test
42+
public void whenInputFileHasBOM_thenUseInputStreamWithReplace() throws IOException {
43+
String line;
44+
String actual = "";
45+
46+
try (BufferedReader br = new BufferedReader(new InputStreamReader(Objects.requireNonNull(ioStream)))) {
47+
while ((line = br.readLine()) != null) {
48+
actual += line.replace("\uFEFF", "");
49+
}
50+
}
51+
52+
assertEquals(expected, actual);
53+
}
54+
55+
@Test
56+
public void whenInputFileHasBOM_thenUseBOMInputStream() throws IOException {
57+
String line;
58+
String actual = "";
59+
60+
try (BufferedReader br = new BufferedReader(new InputStreamReader(new BOMInputStream(ioStream, false, ByteOrderMark.UTF_8, ByteOrderMark.UTF_16BE, ByteOrderMark.UTF_16LE, ByteOrderMark.UTF_32BE, ByteOrderMark.UTF_32LE)))) {
61+
while ((line = br.readLine()) != null) {
62+
actual += line;
63+
}
64+
}
65+
66+
assertEquals(expected, actual);
67+
}
68+
69+
@Test
70+
public void whenInputFileHasBOM_thenUseGoogleGdata() throws IOException {
71+
char[] actual = new char[21];
72+
73+
try (Reader r = new UnicodeReader(ioStream, null)) {
74+
r.read(actual);
75+
}
76+
77+
assertEquals(expected, String.valueOf(actual));
78+
}
79+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Hello world with BOM.

0 commit comments

Comments
 (0)