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 这个属性中获取的。

  • 相关阅读:
    设计原则
    最小路径和--p64--动态规划
    ssm实现数据库关键信息的动态加载
    最大二叉树--p654--递归构造
    城市天际线--p807
    长url转短url--p535
    从中序与后序遍历中构造二叉树-p106--数组,二叉树遍历
    n皇后问题--p52--回溯
    Markdown(editormd)语法解析成HTML
    NFA的实现
  • 原文地址:https://www.cnblogs.com/cag2050/p/7466987.html
Copyright © 2011-2022 走看看