Java Code Examples for java.nio.charset.CharsetEncoder#replaceWith()
The following examples show how to use
java.nio.charset.CharsetEncoder#replaceWith() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: FilenameUtils.java From MLib with GNU General Public License v3.0 | 6 votes |
/** * Convert a filename from Java´s native UTF-16 to OS native character encoding. * * @param fileName The UTF-16 filename string. * @return Natively encoded string for the OS. */ private static String convertToNativeEncoding(String fileName, boolean isPath) { String ret = fileName; ret = removeIllegalCharacters(ret, isPath); //convert our filename to OS encoding... try { final CharsetEncoder charsetEncoder = Charset.defaultCharset().newEncoder(); charsetEncoder.onMalformedInput(CodingErrorAction.REPLACE); // otherwise breaks on first unconvertable char charsetEncoder.onUnmappableCharacter(CodingErrorAction.REPLACE); charsetEncoder.replaceWith(new byte[]{'_'}); final ByteBuffer buf = charsetEncoder.encode(CharBuffer.wrap(ret)); if (buf.hasArray()) { ret = new String(buf.array()); } //remove NUL character from conversion... ret = ret.replaceAll("\\u0000", ""); } catch (CharacterCodingException e) { e.printStackTrace(); } return ret; }
Example 2
Source File: XmlSerializer.java From caja with Apache License 2.0 | 5 votes |
private final static Writer wrap(OutputStream out) { Charset charset = Charset.forName("utf-8"); CharsetEncoder encoder = charset.newEncoder(); encoder.onMalformedInput(CodingErrorAction.REPLACE); encoder.onUnmappableCharacter(CodingErrorAction.REPLACE); try { encoder.replaceWith("\uFFFD".getBytes("utf-8")); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } return new OutputStreamWriter(out, encoder); }
Example 3
Source File: CharsetEncoderTest.java From j2objc with Apache License 2.0 | 5 votes |
public void test_replaceWith() throws Exception { Charset ascii = Charset.forName("US-ASCII"); CharsetEncoder e = ascii.newEncoder(); e.onMalformedInput(CodingErrorAction.REPLACE); e.onUnmappableCharacter(CodingErrorAction.REPLACE); e.replaceWith("=".getBytes("US-ASCII")); String input = "hello\u0666world"; String output = ascii.decode(e.encode(CharBuffer.wrap(input))).toString(); assertEquals("hello=world", output); }
Example 4
Source File: FilenameUtils.java From MLib with GNU General Public License v3.0 | 5 votes |
/** * Convert a filename from Java´s native UTF-16 to US-ASCII character encoding. * * @param fileName The UTF-16 filename string. * @return US-ASCII encoded string for the OS. */ private static String convertToASCIIEncoding(String fileName, boolean isPath) { String ret = fileName; ret = ret.replace("ä", "ae"); ret = ret.replace("ö", "oe"); ret = ret.replace("ü", "ue"); ret = ret.replace("Ä", "Ae"); ret = ret.replace("Ö", "Oe"); ret = ret.replace("Ü", "Ue"); ret = ret.replace("ß", "ss"); // ein Versuch zu vereinfachen ret = cleanUnicode(ret); ret = removeIllegalCharacters(ret, isPath); //convert our filename to OS encoding... try { final CharsetEncoder charsetEncoder = Charset.forName("US-ASCII").newEncoder(); charsetEncoder.onMalformedInput(CodingErrorAction.REPLACE); // otherwise breaks on first unconvertable char charsetEncoder.onUnmappableCharacter(CodingErrorAction.REPLACE); charsetEncoder.replaceWith(new byte[]{'_'}); final ByteBuffer buf = charsetEncoder.encode(CharBuffer.wrap(ret)); if (buf.hasArray()) { ret = new String(buf.array()); } //remove NUL character from conversion... ret = ret.replaceAll("\\u0000", ""); } catch (CharacterCodingException e) { e.printStackTrace(); } return ret; }
Example 5
Source File: ConvertCharacterSet.java From localization_nifi with Apache License 2.0 | 4 votes |
@Override public void onTrigger(final ProcessContext context, final ProcessSession session) { FlowFile flowFile = session.get(); if (flowFile == null) { return; } final ComponentLog logger = getLogger(); final Charset inputCharset = Charset.forName(context.getProperty(INPUT_CHARSET).evaluateAttributeExpressions(flowFile).getValue()); final Charset outputCharset = Charset.forName(context.getProperty(OUTPUT_CHARSET).evaluateAttributeExpressions(flowFile).getValue()); final CharBuffer charBuffer = CharBuffer.allocate(MAX_BUFFER_SIZE); final CharsetDecoder decoder = inputCharset.newDecoder(); decoder.onMalformedInput(CodingErrorAction.REPLACE); decoder.onUnmappableCharacter(CodingErrorAction.REPLACE); decoder.replaceWith("?"); final CharsetEncoder encoder = outputCharset.newEncoder(); encoder.onMalformedInput(CodingErrorAction.REPLACE); encoder.onUnmappableCharacter(CodingErrorAction.REPLACE); encoder.replaceWith("?".getBytes(outputCharset)); try { final StopWatch stopWatch = new StopWatch(true); flowFile = session.write(flowFile, new StreamCallback() { @Override public void process(final InputStream rawIn, final OutputStream rawOut) throws IOException { try (final BufferedReader reader = new BufferedReader(new InputStreamReader(rawIn, decoder), MAX_BUFFER_SIZE); final BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(rawOut, encoder), MAX_BUFFER_SIZE)) { int charsRead; while ((charsRead = reader.read(charBuffer)) != -1) { charBuffer.flip(); writer.write(charBuffer.array(), 0, charsRead); } writer.flush(); } } }); session.getProvenanceReporter().modifyContent(flowFile, stopWatch.getElapsed(TimeUnit.MILLISECONDS)); logger.info("successfully converted characters from {} to {} for {}", new Object[]{inputCharset, outputCharset, flowFile}); session.transfer(flowFile, REL_SUCCESS); } catch (final Exception e) { throw new ProcessException(e); } }
Example 6
Source File: ConvertCharacterSet.java From nifi with Apache License 2.0 | 4 votes |
@Override public void onTrigger(final ProcessContext context, final ProcessSession session) { FlowFile flowFile = session.get(); if (flowFile == null) { return; } final ComponentLog logger = getLogger(); final Charset inputCharset = Charset.forName(context.getProperty(INPUT_CHARSET).evaluateAttributeExpressions(flowFile).getValue()); final Charset outputCharset = Charset.forName(context.getProperty(OUTPUT_CHARSET).evaluateAttributeExpressions(flowFile).getValue()); final CharBuffer charBuffer = CharBuffer.allocate(MAX_BUFFER_SIZE); final CharsetDecoder decoder = inputCharset.newDecoder(); decoder.onMalformedInput(CodingErrorAction.REPLACE); decoder.onUnmappableCharacter(CodingErrorAction.REPLACE); decoder.replaceWith("?"); final CharsetEncoder encoder = outputCharset.newEncoder(); encoder.onMalformedInput(CodingErrorAction.REPLACE); encoder.onUnmappableCharacter(CodingErrorAction.REPLACE); encoder.replaceWith("?".getBytes(outputCharset)); try { final StopWatch stopWatch = new StopWatch(true); flowFile = session.write(flowFile, new StreamCallback() { @Override public void process(final InputStream rawIn, final OutputStream rawOut) throws IOException { try (final BufferedReader reader = new BufferedReader(new InputStreamReader(rawIn, decoder), MAX_BUFFER_SIZE); final BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(rawOut, encoder), MAX_BUFFER_SIZE)) { int charsRead; while ((charsRead = reader.read(charBuffer)) != -1) { charBuffer.flip(); writer.write(charBuffer.array(), 0, charsRead); } writer.flush(); } } }); session.getProvenanceReporter().modifyContent(flowFile, stopWatch.getElapsed(TimeUnit.MILLISECONDS)); logger.info("successfully converted characters from {} to {} for {}", new Object[]{inputCharset, outputCharset, flowFile}); session.transfer(flowFile, REL_SUCCESS); } catch (final Exception e) { throw new ProcessException(e); } }