Java by API/java.nio.charset/Charset
Содержание
Charset: aliases()
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();
}
}
}
Charset: availableCharsets()
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());
}
}
}
}
Charset: defaultCharset()
/*
* 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();
}
}
}
Charset: displayName()
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();
}
}
}
Charset: forName(String charsetName)
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();
}
}
}
Charset: isRegistered()
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();
}
}
}
Charset: name()
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();
}
}
}
Charset: newDecoder()
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();
}
}
Charset: newEncoder()
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();
}
}
}