Java by API/java.nio.charset/Charset
Содержание
Charset: aliases()
<source lang="java">
import java.nio.charset.Charset; import java.util.Iterator; import java.util.Map; public class Main {
public static void main(String[] args) { Map charsets = Charset.availableCharsets(); Iterator iterator = charsets.values().iterator(); while (iterator.hasNext()) { Charset cs = (Charset) iterator.next(); System.out.print(cs.displayName()); if (cs.isRegistered()) { System.out.print(" (registered): "); } else { System.out.print(" (unregistered): "); } System.out.print(cs.name()); Iterator names = cs.aliases().iterator(); while (names.hasNext()) { System.out.print(", "); System.out.print(names.next()); } System.out.println(); } }
}
</source>
Charset: availableCharsets()
<source lang="java">
import java.nio.charset.Charset; import java.util.Iterator; import java.util.Set; import java.util.SortedMap; public class Main {
static public void main(String args[]) throws Exception { SortedMap charsets = Charset.availableCharsets(); Set names = charsets.keySet(); for (Iterator e = names.iterator(); e.hasNext();) { String name = (String) e.next(); Charset charset = (Charset) charsets.get(name); System.out.println(charset); Set aliases = charset.aliases(); for (Iterator ee = aliases.iterator(); ee.hasNext();) { System.out.println(" " + ee.next()); } } }
}
</source>
Charset: defaultCharset()
<source lang="java">
/*
* Copyright (c) 1995 - 2008 Sun Microsystems, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * - Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * - Neither the name of Sun Microsystems nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
import static java.lang.System.out; import java.io.Console; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.nio.charset.Charset; public class Main {
public static void main(String... args) { Constructor[] ctors = Console.class.getDeclaredConstructors(); Constructor ctor = null; for (int i = 0; i < ctors.length; i++) { ctor = ctors[i]; if (ctor.getGenericParameterTypes().length == 0) break; } try { ctor.setAccessible(true); Console c = (Console) ctor.newInstance(); Field f = c.getClass().getDeclaredField("cs"); f.setAccessible(true); out.format("Console charset : %s%n", f.get(c)); out.format("Charset.defaultCharset(): %s%n", Charset.defaultCharset()); // production code should handle these exceptions more gracefully } catch (InstantiationException x) { x.printStackTrace(); } catch (InvocationTargetException x) { x.printStackTrace(); } catch (IllegalAccessException x) { x.printStackTrace(); } catch (NoSuchFieldException x) { x.printStackTrace(); } }
}
</source>
Charset: displayName()
<source lang="java">
import java.nio.charset.Charset; import java.util.Iterator; import java.util.Map; public class Main {
public static void main(String[] args) { Map charsets = Charset.availableCharsets(); Iterator iterator = charsets.values().iterator(); while (iterator.hasNext()) { Charset cs = (Charset) iterator.next(); System.out.print(cs.displayName()); if (cs.isRegistered()) { System.out.print(" (registered): "); } else { System.out.print(" (unregistered): "); } System.out.print(cs.name()); Iterator names = cs.aliases().iterator(); while (names.hasNext()) { System.out.print(", "); System.out.print(names.next()); } System.out.println(); } }
}
</source>
Charset: forName(String charsetName)
<source lang="java">
import java.nio.CharBuffer; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.nio.charset.Charset; import java.nio.charset.CharsetEncoder; public class MainClass {
public static void main(String[] args) throws Exception{ CharsetEncoder encoder = Charset.forName("US-ASCII").newEncoder(); ServerSocketChannel server = ServerSocketChannel.open(); server.socket().bind(new java.net.InetSocketAddress(8000)); for (;;) { // This server runs forever SocketChannel client = server.accept(); String response = new java.util.Date().toString() + "\r\n"; client.write(encoder.encode(CharBuffer.wrap(response))); client.close(); } }
}
</source>
Charset: isRegistered()
<source lang="java">
import java.nio.charset.Charset; import java.util.Iterator; import java.util.Map; public class Main {
public static void main(String[] args) { Map charsets = Charset.availableCharsets(); Iterator iterator = charsets.values().iterator(); while (iterator.hasNext()) { Charset cs = (Charset) iterator.next(); System.out.print(cs.displayName()); if (cs.isRegistered()) { System.out.print(" (registered): "); } else { System.out.print(" (unregistered): "); } System.out.print(cs.name()); Iterator names = cs.aliases().iterator(); while (names.hasNext()) { System.out.print(", "); System.out.print(names.next()); } System.out.println(); } }
}
</source>
Charset: name()
<source lang="java">
import java.nio.charset.Charset; import java.util.Iterator; import java.util.Map; public class Main {
public static void main(String[] args) { Map charsets = Charset.availableCharsets(); Iterator iterator = charsets.values().iterator(); while (iterator.hasNext()) { Charset cs = (Charset) iterator.next(); System.out.print(cs.displayName()); if (cs.isRegistered()) { System.out.print(" (registered): "); } else { System.out.print(" (unregistered): "); } System.out.print(cs.name()); Iterator names = cs.aliases().iterator(); while (names.hasNext()) { System.out.print(", "); System.out.print(names.next()); } System.out.println(); } }
}
</source>
Charset: newDecoder()
<source lang="java">
import java.io.File; import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; import java.nio.charset.CharsetEncoder; public class Main {
static public void main(String args[]) throws Exception { File infile = new File("inFilename"); File outfile = new File("outFilename"); RandomAccessFile inraf = new RandomAccessFile(infile, "r"); RandomAccessFile outraf = new RandomAccessFile(outfile, "rw"); FileChannel finc = inraf.getChannel(); FileChannel foutc = outraf.getChannel(); MappedByteBuffer inmbb = finc.map(FileChannel.MapMode.READ_ONLY, 0, (int) infile.length()); Charset inCharset = Charset.forName("UTF8"); Charset outCharset = Charset.forName("UTF16"); CharsetDecoder inDecoder = inCharset.newDecoder(); CharsetEncoder outEncoder = outCharset.newEncoder(); CharBuffer cb = inDecoder.decode(inmbb); ByteBuffer outbb = outEncoder.encode(cb); foutc.write(outbb); inraf.close(); outraf.close(); }
}
</source>
Charset: newEncoder()
<source lang="java">
import java.nio.CharBuffer; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java.nio.charset.Charset; import java.nio.charset.CharsetEncoder; public class MainClass {
public static void main(String[] args) throws Exception{ CharsetEncoder encoder = Charset.forName("US-ASCII").newEncoder(); ServerSocketChannel server = ServerSocketChannel.open(); server.socket().bind(new java.net.InetSocketAddress(8000)); for (;;) { // This server runs forever SocketChannel client = server.accept(); String response = new java.util.Date().toString() + "\r\n"; client.write(encoder.encode(CharBuffer.wrap(response))); client.close(); } }
}
</source>