zoukankan      html  css  js  c++  java
  • Java -Dfile.encoding=UTF-8 干掉乱码

    • java 的执行方式:
    1. java Test.class
    2. jave -jar Test.jar
    3. Jar Test.app
    • 以不同的方式来执行,从控制台中得到的程序输出也不一致
      比如说,刚刚在 eclipse 中还能正常打印出来的汉字,在打成 jar 包以后,
      双击该 jar 文件以 Jar Test.app 的方式来启动,打印出来的文字就成了乱码了。
      毕竟写出来的 java 程序最终还是要打成 Jar 包来使用的,总不能每次都在 eclipse 中启动吧?

    • 只有在启动 java 程序前通过传递参数来更改才有效,程序一经启动就无法再更改了。
      这样的话,也就只有通过传递 jvm 参数的方式来做默认编码的变更了:
      其一,写一个带 -Dfile.encoding=UTF-8 参数的脚本文件来启动;
      其二,用 Jar Bundler.app 打包成 app,效率应该不如第一种方案。
      原理其实都差不多,都只是将更改 jvm 默认编码的操作封装了起来,执行时就不用再手动键入了。

    • 搜索 java 源码,只能找到 4 个文件中包含 file.encoding 的文件,
      也就是说,只有四个文件调用了 file.encoding 这个属性。
      在 java.nio.charset 包中的 Charset.java 中,这段话的意思说的很明确了。
      简单说就是默认字符集是在 java 虚拟机启动时决定的,
      依赖于 java 虚拟机所在的操作系统的区域以及字符集。
      代码中可以看到,默认字符集就是从 file.encoding 这个属性中获取的。

  • 相关阅读:
    磁盘IO工作机制
    java 的IO类库的基本架构
    诡异的NPE--三目运算自动类型转换
    WIN2008服务器不能复制粘贴怎么办
    用nrm一键切换npm源
    Linux常用命令大全(非常全!!!)
    整理 node-sass 安装失败的原因及解决办法
    win10完美去除小箭头
    JS中slice,splice,split的区别
    Win10环境下Redis和Redis desktop manager 安装
  • 原文地址:https://www.cnblogs.com/cag2050/p/7466987.html
Copyright © 2011-2022 走看看