Java by API/java.nio.charset/Charset

Материал из Java эксперт
Перейти к: навигация, поиск

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>