zoukankan      html  css  js  c++  java
  • 谜一样的Java编码和Windows编码

    本文适用于Java源码用UTF-8编码,平台系统为Windows的情况

    不管是maven,还是javac,你的IDE都会带上一个参数:-Dfile.encoding=UTF-8

    Windows(或许Windows10以下)的CMD默认活动代码页是GBK,
    也就是 936,这样的话,很多工具会显示中文。
    如果遇到内部编码是UTF-8的程序,他会乱码,例如rbt.

    如果你改成 chcp 65001 也就是UTF-8,那么CMD字体变成点阵字体,就不是之前的那个熟悉的终端了,出奇的难看,输出都变成英文。。

    Mysql之类的终端都正常了,能显示中文了。。

    如何设置终端默认UTF-8编码

    还在用cmd?

    现在都流行用cmder.强烈推荐。

    启动脚本设置 chcp 65001。开心又愉快。
    Win+ALT+P打开设置,Environment > 在窗口中加入

    chcp utf-8
    set JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"

    这样终端环境就是UTF-8了。

    java -cp Test.jar com.cortwi.operate.Test

    会很正常的显示中文了,如下图1-1

    cmder和Java编码
    图1-1 cmder设置65001和UTF-8环境 执行Java

    注意:

    经过测试,CHCP 936的终端,没有JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
    的情况下执行JAVA输出的中文是不会乱码的

    如果在CHCP 936的终端下,那么不应该设置系统环境变量:JAVA_TOOL_OPTIONS ,应该直接执行:

    java -cp Test.jar com.cortwi.operate.Test

    又会很开心的输出中文了。

    TIPS不改变系统环境:

    chcp 936
    chcp 65001

    若想保留Windows默认设置,就来回切换吧,把以上两个命令常记在心。。。。
    使用自带命令就用 936,中文GBK环境。
    使用一些UTF-8的跨平台的那种程序遇到了乱码,就执行chcp 65001 将当前终端的活动代码页改为UTF-8,中文就不会乱码,但是命令输出提示可能会变成英文。

    经过测试Windows[7] 的svn是需要chcp 936的。如图 1-2所示。
    cmder中文
    图1-2 cmder的chcp 936环境

    65001下会乱码,如图1-3
    cmder乱码
    图1-3 cmder的chcp 65001环境

  • 相关阅读:
    JDBC的异常
    JDBC的事务
    JDBC的数据类型
    JDBC的结果集
    JDBC操作MySQL出现:This result set must come from a statement that was created with a result set type of ResultSet.CONCUR_UPDATABLE, ...的问题解决
    JDBC的Statement对象
    JDBC连接数据库
    JDBC驱动类型
    JDBC实例代码
    java与javax的区别分析(转)
  • 原文地址:https://www.cnblogs.com/slankka/p/9158503.html
Copyright © 2011-2022 走看看