系统字符集对Java程序的影响
Linux 下 LANG 环境变量
常用的几个LANG 值
export LANG=en_US.UTF-8 # 英文 UTF-8编码
export LANG=zh_CN.UTF-8 # 中文 UTF-8编码
export LANG=zh_CN.GB18030 # 中文 GB18030编码
export LANG=C # ascii 编码 unset LANG 或者 LANG 为空等同此种情况
export LANG=POSIX # ascii 编码 等同 LANG=C
对Java程序,字符串在java内存中总是按unicode编码存储的,系统字符集会影响到字节流=>字符流
、字符流=>字节流
的转换
InputStream -> Reader
Writer -> OutputStream
String -> bytes
bytes -> String
// 获取系统默认字符集
System.getProperty("file.encoding"); // 中文windows 下默认是GBK
Charset.defaultCharset(); (import java.nio.charset.Charset)
// 以 UTF-8 读取文件
FileInputStream fis = new FileInputStream("d:\\input.txt");
InputStreamReader reader = new InputStreamReader(fis, "UTF-8");
String encoding = "UTF-8";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Writer output = new OutputStreamWriter(baos, encoding); // 指定从字符流转换成字节流时的字符编码
// 如果不指定字符编码则使用默认的字符编码,也就是LANG中设置的
String.getBytes(charset)
new String(bytes, charset)
参考资料
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。