Merge pull request #5637 from kcacademic/character-encoding

BAEL-2300: Adding files for the tutorial on character encoding.
This commit is contained in:
Emily Cheyne 2018-11-09 08:14:37 -08:00 committed by GitHub
commit abe483a85f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 94 additions and 0 deletions

View File

@ -0,0 +1,32 @@
package com.baeldung.encoding;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
public class CharacterEncodingExamples {
static String readFile(String filePath, String encoding) throws IOException {
File file = new File(filePath);
StringBuffer buffer = new StringBuffer();
try (InputStreamReader isr = new InputStreamReader(new FileInputStream(file), encoding)) {
int data;
while ((data = isr.read()) != -1) {
buffer.append((char) data);
}
}
return buffer.toString();
}
static String convertToBinary(String input, String encoding) throws UnsupportedEncodingException {
byte[] bytes = input.getBytes(encoding);
StringBuffer buffer = new StringBuffer();
for (int b : bytes) {
buffer.append(Integer.toBinaryString((b + 256) % 256));
buffer.append(" ");
}
return buffer.toString();
}
}

View File

@ -0,0 +1,61 @@
package com.baeldung.encoding;
import java.io.IOException;
import org.junit.Assert;
import org.junit.Test;
public class CharacterEncodingExamplesUnitTest {
@Test
public void givenTextFile_whenCalledWithEncodingASCII_thenProduceIncorrectResult() throws IOException {
Assert.assertEquals(
CharacterEncodingExamples.readFile(
"src/test/resources/encoding.txt", "US-ASCII"),
"The fa<66><61>ade pattern is a software-design pattern commonly used with object-oriented programming.");
}
@Test
public void givenTextFile_whenCalledWithEncodingUTF8_thenProduceCorrectResult() throws IOException {
Assert.assertEquals(
CharacterEncodingExamples.readFile(
"src/test/resources/encoding.txt", "UTF-8"),
"The façade pattern is a software-design pattern commonly used with object-oriented programming.");
}
@Test
public void givenCharacterA_whenConvertedtoBinaryWithEncodingASCII_thenProduceResult() throws IOException {
Assert.assertEquals(
CharacterEncodingExamples.convertToBinary("A", "US-ASCII"),
"1000001 ");
}
@Test
public void givenCharacterA_whenConvertedtoBinaryWithEncodingUTF8_thenProduceResult() throws IOException {
Assert.assertEquals(
CharacterEncodingExamples.convertToBinary("A", "UTF-8"),
"1000001 ");
}
@Test
public void givenCharacterCh_whenConvertedtoBinaryWithEncodingBig5_thenProduceResult() throws IOException {
Assert.assertEquals(
CharacterEncodingExamples.convertToBinary("", "Big5"),
"10111011 1111001 ");
}
@Test
public void givenCharacterCh_whenConvertedtoBinaryWithEncodingUTF8_thenProduceResult() throws IOException {
Assert.assertEquals(
CharacterEncodingExamples.convertToBinary("", "UTF-8"),
"11101000 10101010 10011110 ");
}
@Test
public void givenCharacterCh_whenConvertedtoBinaryWithEncodingUTF32_thenProduceResult() throws IOException {
Assert.assertEquals(
CharacterEncodingExamples.convertToBinary("", "UTF-32"),
"0 0 10001010 10011110 ");
}
}

View File

@ -0,0 +1 @@
The façade pattern is a software-design pattern commonly used with object-oriented programming.