JAVA的默认字符编码
大家都说java使用的字符集是unicode,那么默认编码不就是应该是UTF8,UTF16之类的unicode编码吗?
可是调用Charset.defaultCharset()的结果并非如此。
import java.nio.charset.Charset;
public class javaCode {
public static void main(String args[])
{
String defaultCharsetName=Charset.defaultCharset().displayName();
System.out.println("defaultCharsetName:"+defaultCharsetName);
}
}
执行结果如下
defaultCharsetName:GBK
多次试验发现,这个默认字符编码是由windows的语言地域里的设定决定的
这个字符编码肯定不是java内部的字符编码,那会不会是文件读入时的字符编码?
先用Emeditor之类的编辑器,生成一个UTF8的txt文件,输入内容:門(door),保存。
用下面的代码读入
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
public class javaCode {
public static void main(String args[])
{
String defaultCharsetName=Charset.defaultCharset().displayName();
System.out.println("defaultCharsetName:"+defaultCharsetName);
try {
InputStream is = new FileInputStream("F:\\shifjst.txt");
//等于 InputStreamReader streamReader = new InputStreamReader(is,Charset.defaultCharset());
InputStreamReader streamReader = new InputStreamReader(is);
char[] chars = new char[10];
streamReader.read(chars, 0, 10);
System.out.println(chars);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
结果是乱码:
defaultCharsetName:windows-31j
髢?door)
再把那个文件的格式改成shift-jis,正确读出来了。
defaultCharsetName:windows-31j
門(door)
看来,java读入文件时的字符编码是根据系统的默认编码来的。
相关文档:
Eryptogram.java 文件:
package com.cube.limail.util;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
/**
* 加密解密类
* @author 叶树深
* @version 1.00 2008年01月03日
*/
public class Eryptogram
{
&nb ......
我们学习java必须把基础打好,只有这样,你的技术才能过关,技术过关了,学习任何框架都很容易,项目开发更是得心应手。。。
学习顺序基本是:
基本语法------> 类相关的语法-------> 内部类的语法---------> 继承相关的语法-------> 异常的语法-------> 线程的语法------>集合的语法-------->  ......
如果你是一名Java程序员,并且关注这编程语言方面的发展,比如经常去TIOBE网站了解编程语言流行度排行,那么你应该听说过Scala,如果你还没有开始学习Scala,或者打算下个礼拜开始学的话,请先看看下面这篇文章,看看能不能改变你的想法。
Scala是为你准备的吗?你必须自己看明白并做决定。除了伸展性之外,我们发现喜欢用S ......
//五个类
--|file类:直接与文件本身有关系
--|字节流 OutputStream InputStream
--|字符流 Writer Reader
存放在文件中的都是字节。而读到内存中才可能变成字符
打印流:printStream/PrintWriter:提供了各种打印功能,可以输出任意的内容,根据实例化对象的不同
输出的位置也不同
package java11.I ......
Java简介
Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet。另一方面,Java ......