系统字符集对Java程序的影响

系统字符集对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)

参考资料

  1. http://liuzhiji.bokee.com/671...
  2. https://stackoverflow.com/que...
  3. https://superuser.com/questio...
  4. https://docs.oracle.com/javas...
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值