好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
设置Java的默认编码方式 关闭 返回上一级  

设置Java的默认编码方式
+ 查看更多

发布日期:2018-03-08 17:46
分类:JAVA
浏览次数:310
如何用编程的方式在JVM(1.5x)中设置默认编码方式
我已经看过这种方法 -Dfile.encoding=whatever ,不过是在更高的JVM版本里,然而因为一些原因我没法用那么高的版本。
我已经试过这样:
System.setProperty("file.encoding", "UTF-8");
这个属性确实被设置成功了,但最后调用getBytes方法的时候却不是UTF-8编码的
    System.setProperty("file.encoding", "UTF-8");

    byte inbytes[] = new byte[1024];

    FileInputStream fis = new FileInputStream("response.txt");
    fis.read(inbytes);
    FileOutputStream fos = new FileOutputStream("response-2.txt");
    String in = new String(inbytes, "UTF8");
    fos.write(in.getBytes());

回答

很遗憾,文件编码方式这个属性在虚拟机刚启动的时候就被确定了;
在进入你的主方法之前,String.getBytes()返回的字符串,以及InputStream和OutputStream的构造都已经用默认编码方式缓存好了。
正如 Edward Grech 所指出的,修改环境变量 JAVA_TOOL_OPTIONS 可以改变这个属性,但应该这样写:
java -Dfile.encoding=UTF-8 … com.x.Main
Charset.defaultCharset() 可以展示被更改的file.encoding属性,但Java核心库中的大部分需要确定编码方式的部分都不受其影响。
当你编码或解码的时候,你可以查看 file.encoding 这个属性,或是调用 Charset.defaultCharset() 得到默认编码方式,
然后对合适的方法或构造函数重载来修改它。
上一篇Java中将InputStream中的内容写入到OutputStream中的简单方式
如何中断Java中的线程?下一篇
下一篇如何中断Java中的线程?

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号