Browse Source

[github-340] make more use of StandardCharsets. Thanks to XenoAmess. This closes #340

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1902755 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_5_2_3
PJ Fanning 1 year ago
parent
commit
87ee700d04

+ 2
- 1
poi-examples/src/main/java/org/apache/poi/examples/hsmf/Msg2txt.java View File

import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;


import org.apache.poi.hsmf.MAPIMessage; import org.apache.poi.hsmf.MAPIMessage;
import org.apache.poi.hsmf.datatypes.AttachmentChunks; import org.apache.poi.hsmf.datatypes.AttachmentChunks;
public void processMessage() throws IOException { public void processMessage() throws IOException {
String txtFileName = fileNameStem + ".txt"; String txtFileName = fileNameStem + ".txt";
String attDirName = fileNameStem + "-att"; String attDirName = fileNameStem + "-att";
try (PrintWriter txtOut = new PrintWriter(txtFileName, "UTF-8")) {
try (PrintWriter txtOut = new PrintWriter(txtFileName, StandardCharsets.UTF_8.name())) {
try { try {
String displayFrom = msg.getDisplayFrom(); String displayFrom = msg.getDisplayFrom();
txtOut.println("From: " + displayFrom); txtOut.println("From: " + displayFrom);

+ 1
- 1
poi-examples/src/main/java/org/apache/poi/examples/ss/html/ToHtml.java View File

return; return;
} }


try (PrintWriter pw = new PrintWriter(args[1], "UTF-8")) {
try (PrintWriter pw = new PrintWriter(args[1], StandardCharsets.UTF_8.name())) {
ToHtml toHtml = create(args[0], pw); ToHtml toHtml = create(args[0], pw);
toHtml.setCompleteHTML(true); toHtml.setCompleteHTML(true);
toHtml.printPage(); toHtml.printPage();

+ 3
- 3
poi-examples/src/main/java/org/apache/poi/examples/xssf/usermodel/BigGridDemo.java View File

import java.io.OutputStream; import java.io.OutputStream;
import java.io.OutputStreamWriter; import java.io.OutputStreamWriter;
import java.io.Writer; import java.io.Writer;
import java.nio.charset.StandardCharsets;
import java.util.Calendar; import java.util.Calendar;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.HashMap; import java.util.HashMap;
*/ */
public final class BigGridDemo { public final class BigGridDemo {
private static final Logger LOG = LogManager.getLogger(BigGridDemo.class); private static final Logger LOG = LogManager.getLogger(BigGridDemo.class);
private static final String XML_ENCODING = "UTF-8";


private static final Random rnd = new Random(); private static final Random rnd = new Random();


tmp = TempFile.createTempFile("sheet", ".xml"); tmp = TempFile.createTempFile("sheet", ".xml");
try ( try (
FileOutputStream stream = new FileOutputStream(tmp); FileOutputStream stream = new FileOutputStream(tmp);
Writer fw = new OutputStreamWriter(stream, XML_ENCODING)
Writer fw = new OutputStreamWriter(stream, StandardCharsets.UTF_8)
) { ) {
generate(fw, styles); generate(fw, styles);
} }
} }


void beginSheet() throws IOException { void beginSheet() throws IOException {
_out.write("<?xml version=\"1.0\" encoding=\""+XML_ENCODING+"\"?>" +
_out.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\">" ); "<worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\">" );
_out.write("<sheetData>\n"); _out.write("<sheetData>\n");
} }

+ 4
- 4
poi-examples/src/test/java/org/apache/poi/integration/TestXLSX2CSV.java View File

// remember and replace default error streams // remember and replace default error streams
err = System.err; err = System.err;


PrintStream error = new PrintStream(errorBytes, true, "UTF-8");
PrintStream error = new PrintStream(errorBytes, true, StandardCharsets.UTF_8.name());
System.setErr(error); System.setErr(error);
} }


// returns with some System.err // returns with some System.err
XLSX2CSV.main(new String[] { "not-existing-file.xlsx" }); XLSX2CSV.main(new String[] { "not-existing-file.xlsx" });


String output = errorBytes.toString("UTF-8");
String output = errorBytes.toString(StandardCharsets.UTF_8);
assertTrue(output.contains("Not found or not a file: not-existing-file.xlsx"), "Had: " + output); assertTrue(output.contains("Not found or not a file: not-existing-file.xlsx"), "Had: " + output);
} }


@Test @Test
public void testSampleFile() throws Exception { public void testSampleFile() throws Exception {
final UnsynchronizedByteArrayOutputStream outputBytes = new UnsynchronizedByteArrayOutputStream(); final UnsynchronizedByteArrayOutputStream outputBytes = new UnsynchronizedByteArrayOutputStream();
PrintStream out = new PrintStream(outputBytes, true, "UTF-8");
PrintStream out = new PrintStream(outputBytes, true, StandardCharsets.UTF_8.name());


// The package open is instantaneous, as it should be. // The package open is instantaneous, as it should be.
try (OPCPackage p = OPCPackage.open(XSSFTestDataSamples.getSampleFile("sample.xlsx").getAbsolutePath(), PackageAccess.READ)) { try (OPCPackage p = OPCPackage.open(XSSFTestDataSamples.getSampleFile("sample.xlsx").getAbsolutePath(), PackageAccess.READ)) {
@Test @Test
public void testMinColumns() throws Exception { public void testMinColumns() throws Exception {
final UnsynchronizedByteArrayOutputStream outputBytes = new UnsynchronizedByteArrayOutputStream(); final UnsynchronizedByteArrayOutputStream outputBytes = new UnsynchronizedByteArrayOutputStream();
PrintStream out = new PrintStream(outputBytes, true, "UTF-8");
PrintStream out = new PrintStream(outputBytes, true, StandardCharsets.UTF_8.name());


// The package open is instantaneous, as it should be. // The package open is instantaneous, as it should be.
try (OPCPackage p = OPCPackage.open(XSSFTestDataSamples.getSampleFile("sample.xlsx").getAbsolutePath(), PackageAccess.READ)) { try (OPCPackage p = OPCPackage.open(XSSFTestDataSamples.getSampleFile("sample.xlsx").getAbsolutePath(), PackageAccess.READ)) {

+ 2
- 1
poi-ooxml/src/main/java/org/apache/poi/xdgf/util/HierarchyPrinter.java View File

import java.io.OutputStream; import java.io.OutputStream;
import java.io.PrintStream; import java.io.PrintStream;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;


import org.apache.poi.xdgf.usermodel.XDGFPage; import org.apache.poi.xdgf.usermodel.XDGFPage;
import org.apache.poi.xdgf.usermodel.XDGFShape; import org.apache.poi.xdgf.usermodel.XDGFShape;


try ( try (
OutputStream os = new FileOutputStream(pageFile); OutputStream os = new FileOutputStream(pageFile);
PrintStream pos = new PrintStream(os, false, "utf-8")
PrintStream pos = new PrintStream(os, false, StandardCharsets.UTF_8.name())
) { ) {
printHierarchy(page, pos); printHierarchy(page, pos);
} }

+ 2
- 1
poi-ooxml/src/main/java/org/apache/poi/xssf/streaming/StreamingSheetWriter.java View File

import java.io.OutputStream; import java.io.OutputStream;
import java.io.OutputStreamWriter; import java.io.OutputStreamWriter;
import java.io.Writer; import java.io.Writer;
import java.nio.charset.StandardCharsets;


import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
* @param out the output stream to write to * @param out the output stream to write to
*/ */
protected static Writer createWriter(OutputStream out) throws IOException { protected static Writer createWriter(OutputStream out) throws IOException {
return new BufferedWriter(new OutputStreamWriter(out, "UTF-8"));
return new BufferedWriter(new OutputStreamWriter(out, StandardCharsets.UTF_8));
} }


@Override @Override

+ 14
- 14
poi-ooxml/src/test/java/org/apache/poi/xssf/extractor/TestXSSFExportToXML.java View File

XSSFExportToXml exporter = new XSSFExportToXml(map); XSSFExportToXml exporter = new XSSFExportToXml(map);
UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream(); UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
exporter.exportToXML(os, true); exporter.exportToXML(os, true);
String xml = os.toString("UTF-8");
String xml = os.toString(StandardCharsets.UTF_8);


assertNotNull(xml); assertNotNull(xml);
assertFalse(xml.isEmpty()); assertFalse(xml.isEmpty());
XSSFExportToXml exporter = new XSSFExportToXml(map); XSSFExportToXml exporter = new XSSFExportToXml(map);
UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream(); UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
exporter.exportToXML(os, true); exporter.exportToXML(os, true);
String xml = os.toString("UTF-8");
String xml = os.toString(StandardCharsets.UTF_8);


assertNotNull(xml); assertNotNull(xml);
assertFalse(xml.isEmpty()); assertFalse(xml.isEmpty());
String xml; String xml;
try (UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream()) { try (UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream()) {
exporter.exportToXML(os, true); exporter.exportToXML(os, true);
xml = os.toString("UTF-8");
xml = os.toString(StandardCharsets.UTF_8);
} }
assertNotNull(xml); assertNotNull(xml);


XSSFExportToXml exporter = new XSSFExportToXml(map); XSSFExportToXml exporter = new XSSFExportToXml(map);
UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream(); UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
exporter.exportToXML(os, true); exporter.exportToXML(os, true);
String xmlData = os.toString("UTF-8");
String xmlData = os.toString(StandardCharsets.UTF_8);


assertNotNull(xmlData); assertNotNull(xmlData);
assertFalse(xmlData.isEmpty()); assertFalse(xmlData.isEmpty());
XSSFExportToXml exporter = new XSSFExportToXml(map); XSSFExportToXml exporter = new XSSFExportToXml(map);
UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream(); UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
exporter.exportToXML(os, true); exporter.exportToXML(os, true);
String xmlData = os.toString("UTF-8");
String xmlData = os.toString(StandardCharsets.UTF_8);


assertNotNull(xmlData); assertNotNull(xmlData);
assertFalse(xmlData.isEmpty()); assertFalse(xmlData.isEmpty());
XSSFExportToXml exporter = new XSSFExportToXml(map); XSSFExportToXml exporter = new XSSFExportToXml(map);
UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream(); UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
exporter.exportToXML(os, true); exporter.exportToXML(os, true);
String xmlData = os.toString("UTF-8");
String xmlData = os.toString(StandardCharsets.UTF_8);


assertNotNull(xmlData); assertNotNull(xmlData);
assertFalse(xmlData.isEmpty()); assertFalse(xmlData.isEmpty());
XSSFExportToXml exporter = new XSSFExportToXml(map); XSSFExportToXml exporter = new XSSFExportToXml(map);
UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream(); UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
exporter.exportToXML(os, true); exporter.exportToXML(os, true);
String xmlData = os.toString("UTF-8");
String xmlData = os.toString(StandardCharsets.UTF_8);


assertNotNull(xmlData); assertNotNull(xmlData);
assertFalse(xmlData.isEmpty()); assertFalse(xmlData.isEmpty());


UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream(); UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
exporter.exportToXML(os, true); exporter.exportToXML(os, true);
String xmlData = os.toString("UTF-8");
String xmlData = os.toString(StandardCharsets.UTF_8);


assertNotNull(xmlData); assertNotNull(xmlData);
assertFalse(xmlData.isEmpty()); assertFalse(xmlData.isEmpty());
XSSFExportToXml exporter = new XSSFExportToXml(map); XSSFExportToXml exporter = new XSSFExportToXml(map);
UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream(); UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
exporter.exportToXML(os, true); exporter.exportToXML(os, true);
String xmlData = os.toString("UTF-8");
String xmlData = os.toString(StandardCharsets.UTF_8);


assertNotNull(xmlData); assertNotNull(xmlData);
assertFalse(xmlData.isEmpty()); assertFalse(xmlData.isEmpty());
XSSFExportToXml exporter = new XSSFExportToXml(map); XSSFExportToXml exporter = new XSSFExportToXml(map);
UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream(); UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
exporter.exportToXML(os, true); exporter.exportToXML(os, true);
String xmlData = os.toString("UTF-8");
String xmlData = os.toString(StandardCharsets.UTF_8);


assertNotNull(xmlData); assertNotNull(xmlData);
assertFalse(xmlData.isEmpty()); assertFalse(xmlData.isEmpty());
XSSFExportToXml exporter = new XSSFExportToXml(map); XSSFExportToXml exporter = new XSSFExportToXml(map);
UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream(); UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
exporter.exportToXML(os, false); exporter.exportToXML(os, false);
String xmlData = os.toString("UTF-8");
String xmlData = os.toString(StandardCharsets.UTF_8);


assertNotNull(xmlData); assertNotNull(xmlData);
assertFalse(xmlData.isEmpty()); assertFalse(xmlData.isEmpty());
XSSFExportToXml exporter = new XSSFExportToXml(map); XSSFExportToXml exporter = new XSSFExportToXml(map);
UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream(); UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
exporter.exportToXML(os, true); exporter.exportToXML(os, true);
String xmlData = os.toString("UTF-8");
String xmlData = os.toString(StandardCharsets.UTF_8);


assertNotNull(xmlData); assertNotNull(xmlData);
assertFalse(xmlData.isEmpty()); assertFalse(xmlData.isEmpty());


UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream(); UnsynchronizedByteArrayOutputStream os = new UnsynchronizedByteArrayOutputStream();
exporter.exportToXML(os, false); exporter.exportToXML(os, false);
assertNotNull(os.toString("UTF-8"));
assertNotNull(os.toString(StandardCharsets.UTF_8));
} }
} }
} }
UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream(); UnsynchronizedByteArrayOutputStream bos = new UnsynchronizedByteArrayOutputStream();
exporter.exportToXML(bos, true); exporter.exportToXML(bos, true);
assertNotNull(DocumentHelper.readDocument(bos.toInputStream())); assertNotNull(DocumentHelper.readDocument(bos.toInputStream()));
String exportedXml = bos.toString("UTF-8");
String exportedXml = bos.toString(StandardCharsets.UTF_8);
assertEquals("<Test><Test>1</Test></Test>", exportedXml.replaceAll("\\s+", "")); assertEquals("<Test><Test>1</Test></Test>", exportedXml.replaceAll("\\s+", ""));
} }
} }

+ 1
- 1
poi-scratchpad/src/main/java/org/apache/poi/hdgf/chunks/Chunk.java View File

} }


int strLen = endsAt - startsAt; int strLen = endsAt - startsAt;
command.value = new String(contents, startsAt, strLen, header.getChunkCharset().name());
command.value = new String(contents, startsAt, strLen, header.getChunkCharset());
break; break;
case 25: case 25:
command.value = LittleEndian.getShort(contents, offset); command.value = LittleEndian.getShort(contents, offset);

+ 2
- 1
poi-scratchpad/src/main/java/org/apache/poi/hdgf/chunks/ChunkHeaderV4V5.java View File

package org.apache.poi.hdgf.chunks; package org.apache.poi.hdgf.chunks;


import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;


/** /**
* A chunk header from v4 or v5 * A chunk header from v4 or v5


@Override @Override
public Charset getChunkCharset() { public Charset getChunkCharset() {
return Charset.forName("ASCII");
return StandardCharsets.US_ASCII;
} }


void setUnknown2(short unknown2) { void setUnknown2(short unknown2) {

+ 2
- 1
poi-scratchpad/src/main/java/org/apache/poi/hdgf/chunks/ChunkHeaderV6.java View File

package org.apache.poi.hdgf.chunks; package org.apache.poi.hdgf.chunks;


import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;


/** /**
* A chunk header from v6 * A chunk header from v6


@Override @Override
public Charset getChunkCharset() { public Charset getChunkCharset() {
return Charset.forName("ASCII");
return StandardCharsets.US_ASCII;
} }


void setUnknown2(short unknown2) { void setUnknown2(short unknown2) {

+ 3
- 2
poi-scratchpad/src/main/java/org/apache/poi/hsmf/datatypes/MessageSubmissionChunk.java View File

import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.Calendar; import java.util.Calendar;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
public void readValue(InputStream value) throws IOException { public void readValue(InputStream value) throws IOException {
// Stored in the file as us-ascii // Stored in the file as us-ascii
byte[] data = IOUtils.toByteArray(value); byte[] data = IOUtils.toByteArray(value);
rawId = new String(data, Charset.forName("ASCII"));
rawId = new String(data, StandardCharsets.US_ASCII);


// Now process the date // Now process the date
String[] parts = rawId.split(";"); String[] parts = rawId.split(";");


@Override @Override
public void writeValue(OutputStream out) throws IOException { public void writeValue(OutputStream out) throws IOException {
byte[] data = rawId.getBytes(Charset.forName("ASCII"));
final byte[] data = rawId.getBytes(StandardCharsets.US_ASCII);
out.write(data); out.write(data);
} }



+ 1
- 1
poi/src/test/java/org/apache/poi/ss/formula/function/ExcelCetabFunctionExtractor.java View File



private static void processFile(InputStream input, File outFile) throws IOException { private static void processFile(InputStream input, File outFile) throws IOException {
try (OutputStream os = new SimpleAsciiOutputStream(new FileOutputStream(outFile)); try (OutputStream os = new SimpleAsciiOutputStream(new FileOutputStream(outFile));
PrintStream ps = new PrintStream(os, true, "UTF-8")) {
PrintStream ps = new PrintStream(os, true, StandardCharsets.UTF_8.name())) {


outputLicenseHeader(ps); outputLicenseHeader(ps);
Class<?> genClass = ExcelCetabFunctionExtractor.class; Class<?> genClass = ExcelCetabFunctionExtractor.class;

+ 2
- 1
poi/src/test/java/org/apache/poi/ss/formula/function/ExcelFileFormatDocFunctionExtractor.java View File

import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.net.URLConnection; import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
os = new SimpleAsciiOutputStream(os); os = new SimpleAsciiOutputStream(os);
PrintStream ps; PrintStream ps;
try { try {
ps = new PrintStream(os, true, "UTF-8");
ps = new PrintStream(os, true, StandardCharsets.UTF_8.name());
} catch(UnsupportedEncodingException e) { } catch(UnsupportedEncodingException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

Loading…
Cancel
Save