谜一样的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
图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所示。
图1-2 cmder的chcp 936环境
65001下会乱码,如图1-3
图1-3 cmder的chcp 65001环境
谜一样的Java编码和Windows编码的更多相关文章
- 签名、BOM头、编码、Windows记事本编码、java编码解码的那些事
对于Windows记事本: ANSI :GB2312 java中应使用GBK解码 Unicode :有签名的UTF-16LE java中应使用UTF-16解码 Unicode big endian : ...
- Java IO4:字符编码
前言 字符编码,这本不属于IO的内容,但字节流之后写的应该是字符流,既然是字符流,那就涉及一个"字符编码的"问题,考虑到字符编码不仅仅是在IO这块,Java中很多场景都涉及到这个概 ...
- 【JAVA编码专题】 JAVA字符编码系列三:Java应用中的编码问题
这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...
- java中的字符编码方式
1. 问题由来 面试的时候被问到了各种编码方式的区别,结果一脸懵逼,这个地方集中学习一下. 2. 几种字符编码的方式 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符 ...
- Java web中常见编码乱码问题(二)
根据上篇记录Java web中常见编码乱码问题(一), 接着记录乱码案例: 案例分析: 2.输出流写入内容或者输入流读取内容时乱码(内容中有中文) 原因分析: a. 如果是按字节写入或读取时乱码, ...
- java IO之 编码 (码表 编码 解码 转换流)
编码 什么是编码? 计算机中存储的都是二进制,但是要显示的时候,就是我们看到的却可以有中国 ,a 1 等字符 计算机中是没有存储字符的,但是我们却看到了.计算机在存储这些信息的时候,根据一个有规 则 ...
- Java应用中的编码问题(转载)
第三篇:JAVA字符编码系列三:Java应用中的编码问题这部分采用重用机制,引用一篇文章来完整本部分目标.来源: Eceel东西在线 问题研究--字符集编码 地址:http://china.ecee ...
- JAVA字符编码三:Java应用中的编码问题
第三篇:JAVA字符编码系列三:Java应用中的编码问题 这部分采用重用机制,引用一篇文章来完整本部分目标. 来源: Eceel东西在线 问题研究--字符集编码 地址:http://china.e ...
- java、js的编码、解码
如果在地址栏挂载参数,特别是包含中文,往往要进行编码,取值时再解码,以下是java和js中编码.解码的各自方法. java: @Test public void test3() throws Unsu ...
随机推荐
- 【PCIE-1】---Pcie基本概念普及(扫盲篇--巨适合新手)
PCIE由早期得PCI扩展衍生而来并且对兼容PCI,两者得主要区别在于并行到串行得切换,且速率更快.目前主板上越来越多得设备都挂载到PCI总线下面,甚至部分硬盘也会挂载PCI总线下面,可见PCIE得应 ...
- JS实现数组排序的方法
前言 排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列,当然排序也是算法中的一种,javascript内置的sort函数是多种排序算法的集合,数组在原数组上进 ...
- Basic Example using SMTP (for PHPMailer v5.0.0 and up)
sample as below: require_once('../class.phpmailer.php'); //include("class.smtp.php"); // o ...
- 自创ant-design-pro组件
ant design蚂蚁金服基于react打造的一个服务于企业级产品的UI框架.而ant design pro呢?就是基于Ant Design这个框架搭建的中后台管理控制台的脚手架. 话不多说,今天给 ...
- php获取文件的文件名(误区)
文件路径:$path = '/home/files/1234.jpg'; php获取文件名,大家应该是轻车熟路了,写个小函数,分分钟 <?php //获取文件名 function get_fil ...
- 文件/大文件上传功能实现(JS+PHP)全过程
文件/大文件上传功能实现(JS+PHP) 参考博文:掘金-橙红年代 前端大文件上传 路漫漫 其修远 PHP + JS 实现大文件分割上传 本文是学习文件上传后的学习总结文章,从无到有实现文件上传功能, ...
- 通过实例理解Java网络IO模型
网络IO模型及分类 网络IO模型是一个经常被提到的问题,不同的书或者博客说法可能都不一样,所以没必要死抠字眼,关键在于理解. Socket连接 不管是什么模型,所使用的socket连接都是一样的. 以 ...
- 直通BAT面试题库锦集
01 python面试题(汇总) 02 面向对象 03 网络和并发编程 04 模块 05 设计模式 06 前端 07 Django框架 08 Flask 09 tornado 10 DB
- 从零开始的vue学习笔记(七)
前言 今天花一天时间阅读完vuex的官方文档,简单的做一下总结和记录 Vuex是什么 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,以前的符合"单向数据流"理念的 ...
- Kylin构建Cube过程详解
1 前言 在使用Kylin的时候,最重要的一步就是创建cube的模型定义,即指定度量和维度以及一些附加信息,然后对cube进行build,当然我们也可以根据原始表中的某一个string字段(这个字段的 ...