文本流与字符集
程序员文章站
2022-07-12 12:36:07
...
文本数据的输入输出;
输入;数据流,缓冲流
输出;介绍向文本打印格式化的输出PrintWrite();
package 文本流; import java.io.FileNotFoundException; import java.io.PrintWriter; /** * 文本流 * @author Administrator * */ public class DemoPritf { public static void main(String[] args) { try { //创建文本写入流 PrintWriter pw = new PrintWriter("F:Raf.txt"); pw.println("hello"); pw.println("java"); pw.println("5"); pw.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
上述代码会在指定的位置创建文件,并输出上述字符
+++++++字符集Charset CharsetEncode
JAVA核心技术I 对字符集做了很大篇幅的介绍 个人认为字符集是一个很复杂的问题,我一直研究到现在还没有搞清楚字符集的装换问题,可能还需要时间吧,现将我理解的分享出来共享一下
1),字符集区分大小写;使用java找出某字符集的别名
package 文本流与字符集; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; import java.util.Set; import java.util.SortedMap; public class DemoCharset { public static void main(String[] args) { //找出字符串的别名 Charset cast = Charset.forName("iso-8859-1"); // aliases返回包含此 charset 各个别名的集合。 Set<String> set = cast.aliases(); for(String name:set){ System.out.println(name); } } }
上面的代码可以找出iso-8859-1的其他名称
2),
获取字符集的名称
//获取字符集的名字 SortedMap<String, Charset> set = Charset.availableCharsets(); for(String name:set.keySet()){ System.out.println(name); }
3),字符的编译与反编译;
package 文本流与字符集; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.charset.Charset; import java.util.Set; import java.util.SortedMap; public class DemoCharset { public static void main(String[] args) { System.out.println("-----编译"); System.out.println("\r"); // 将 Unicode 编译为字符集 // 返回指定 charset 的 charset 对象 Charset cast = Charset.forName("iso-8859-1"); String str = "字符串编码字符串编码"; // 将此 charset 中的 Unicode 字符编码成字节的便捷方法。 ByteBuffer bb = cast.encode(str); byte[] by = bb.array(); // 得到字符编码 for (int ii = 0; ii < by.length; ii++) { System.out.print(by[ii]); } System.out.println("\r"); System.out.println("+++++反编译"); System.out.println("\r"); // 反编译 // 将 byte 数组包装到缓冲区中。 ByteBuffer bytebuffer = ByteBuffer.wrap(by, 0, by.length); // 将此 charset 中的字节解码成 Unicode 字符的便捷方法 CharBuffer cb = cast.decode(bytebuffer); // 本地字符集的方案无法表示所有的,用?表示 System.out.println(cb.toString()); for (int i = 0; i < cb.length(); i++) { // System.out.println(cb.charAt(i)); } } }
运行结果;
-----编译
63636363636363636363
+++++反编译
??????????
上一篇: C++基础知识