彻底解决mac os 下javac Java命令行工具乱码问题

  • 现象
  • 网上搜索的解决方法
  • 一劳永逸Java虚拟机参数设置

现象

偶尔在mac os下编译Java 程序,用中文的话,乱码随之而来,因为javac和java缺省支持的是中文GBK编码。当然用纯英文(意思操作系统是英文)不会碰到这问题。不过现实中这台mac台式机,并不是以编程为主,用纯英文不太可行,还是找个解决方法吧。

网上搜索的解决方法

找了一下,javac java在mac console中文乱码的问题 这个转载页面的方法比较全面,也可行,现复制如下:

java和javac在简体中文的Mac OSX的终端(Terminal.app)环境下,默认是以GBK编码的中文输出各种诸如语法错误,数组访问越界之类的信息。

但是,Mac的终端的默认编码是UTF-8,所以javac和java在未配置的情况下会输出乱码。

解决方法有3个:
1)指定输出的编码为UTF-8
javac -J-Dfile.encoding=UTF-8
java -J-Dfile.encoding=UTF-8

例如:java -J-Dfile.encoding=UTF-8 -jar xxoo.jar

2)输出英文
export LC_ALL=en

3)通过iconv转码
javac something|iconv -f GBK -t UTF-8

上述有标记的行有点问题,正确的应该是:

java -Dfile.encoding=UTF-8 -jar xxoo.jar

另外,方法2)在10.13.6下测试不成功,估计Linux下应该可用(没试)。
但每次需要命令行输入,麻烦,有篇文章建议用 alias 处理:

alias javac=javac -J-Dfile.encoding=UTF-8
alias java=java -Dfile.encoding=UTF-8

还是觉的不方便,因为可能用两个版本 java 比如 apple原生的java6和ORACLE的Java8 ,,想起java虚拟机应该有参数可配置,看了下java参考文献,故此有下列自认比较彻底的解决方法。

一劳永逸Java虚拟机参数设置

java虚拟机参数设置,经常碰到的主要有以下三个变量:
JAVA_OPTS
_JAVA_OPTIONS
JAVA_TOOL_OPTIONS
这三个只有最后一个变量是java标准的且通用,故此采用:

vim ~/.bash_profile
# 添加JVM全局参数
export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"

实际输出如下:

$ javac
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
用法:javac <选项> <源文件>
其中,可能的选项包括:-g                         生成所有调试信息-g:none                    不生成任何调试信息-g:{lines,vars,source}     只生成某些调试信息-nowarn                    不生成任何警告-verbose                   输出有关编译器正在执行的操作的消息-deprecation               输出使用已过时的 API 的源位置-classpath <路径>            指定查找用户类文件和注释处理程序的位置-cp <路径>                   指定查找用户类文件和注释处理程序的位置-sourcepath <路径>           指定查找输入源文件的位置-bootclasspath <路径>        覆盖引导类文件的位置-extdirs <目录>              覆盖安装的扩展目录的位置-endorseddirs <目录>         覆盖签名的标准路径的位置-proc:{none,only}          控制是否执行注释处理和/或编译。-processor <class1>[,<class2>,<class3>...]要运行的注释处理程序的名称;绕过默认的搜索进程-processorpath <路径>        指定查找注释处理程序的位置-d <目录>                    指定存放生成的类文件的位置-s <目录>                    指定存放生成的源文件的位置-implicit:{none,class}     指定是否为隐式引用文件生成类文件 -encoding <编码>             指定源文件使用的字符编码-source <版本>               提供与指定版本的源兼容性-target <版本>               生成特定 VM 版本的类文件-version                   版本信息-help                      输出标准选项的提要-Akey[=value]              传递给注释处理程序的选项-X                         输出非标准选项的提要-J<标志>                     直接将 <标志> 传递给运行时系统

用java运行utf-8中文输入输出程序,一切正常。

备注:这个主要针对 java6 ,后续java8 等都能自动识别,不需要设置。java 7没用过,不清楚。

彻底解决mac os 下javac Java命令行工具乱码问题相关推荐

  1. Mac OS X中安装命令行工具Command Line Tools(无Xcode)

    Mac OS X中安装命令行工具Command Line Tools(无Xcode) 简介 喜欢通过终端访问更传统的Unix工具包的Mac用户(大部分是程序员),都会选择安装Xcode IDE的可选命 ...

  2. mac os mysql 命令行_macos - 在Mac OS Lion上从命令行启动MySQL服务器

    macos - 在Mac OS Lion上从命令行启动MySQL服务器 我为我的Mac安装了mySQL. 除了使用系统首选项中安装的mySQL.prefPane工具启动SQL服务器之外,我想知道从命令 ...

  3. Mac OS 下使用 afconvert 命令,处理音频格式转换

    在上一篇<Mac OS 下使用 you-get 下载音悦台 MV .网易云音乐等>给大家介绍了如何下载MV.音乐等资源,但是出现了一些不常见的音频格式,导致在有些播放器上无法解码播放,所以 ...

  4. Android 下使用 FFmpeg 命令行工具与问题排查

    目录 FFmpeg 命令行工具 将相关文件加入到项目中 修改 ffmpeg 源码 问题排查 上一篇文章 中,我们已经成功编译了 FFmpeg 的主要库并集成到了我们的 Android 应用中.我们暂时 ...

  5. Java命令行工具之 jstat

    jstat 是JDK中提供的一个命令行工具,主要用来打印JVM 性能数据相关的统计数据.主要包含以下几个方面: 垃圾回收(GC)方面数据 编译(Compilation)相关数据 类加载信息(Class ...

  6. linux下的安装命令行工具下载,本地安装DEB包的3种命令行工具(适合Debian体系)

    1. 前言 在本教程中,我们将学习如何使用三种不同的命令行工具(dpkg.apt和gdebi)在Debian及其衍生产品(如Ubuntu和Linux Mint)中安装本地软件包(. deb). 这对那 ...

  7. 解决Mac OS下JDK 1.8无法使用JMC问题

    一.问题 由于应用出现了一些性能问题,准备在本地启动应用,使用JMC分析下应用运行时的详细内存信息. 本地开发环境使用macbook,由于是使用的安装包安装的jdk,直接在命令行输入jmc,就可以启动 ...

  8. Mac系统下如何使用命令行方式启动MySQL

    首先,先去官网下载MySQL,选择Mac版本的DMG格式的文件. 官网地址为:dev.mysql.com/downloads/mysql/5.7.html 然后下载后,直接双击对应的dmg格式的文件进 ...

  9. jq linux下载文件,linux下的json命令行工具–jq

    jq是一个很轻量却很强大的命令行下的json解析器.jq是json中的"sed"命令,它可以用来slice.filter.map.transform json数据.jq是用C编写的 ...

  10. 不用下载字体解决Mac系统下Python的matplotlib库中文乱码的问题

    百度或谷歌matplotlib库绘图时产生中文乱码问题,得到的最多的答案就是下面几行代码: import numpy as np import matplotlib.pyplot as plt plt ...

最新文章

  1. Ubuntu12.04安装配置Theano
  2. CodeChef March Lunchtime 2018 div2
  3. ViBe背景建模算法
  4. 【ZOJ - 3703】Happy Programming Contest(带优先级的01背包,贪心背包)
  5. 数字加密c语言程序_国外程序员整理的 C++ 资源大全
  6. arduino怎么和C语言程序通信,c – 如何将arduino库与标准C代码一起使用
  7. 隔年增长的题_行测技巧:资料分析隔年增长问题
  8. nodejs写的HTTP静态文件的引擎(轻量级)
  9. 搜索引擎字符串(亲测)
  10. 如何解决It's likely you're attempting to run Eclipse using the JRE instead of the JDK
  11. ncnn笔记:02)ncnn之JNI入门初窥
  12. Python-常用模块有哪些
  13. Python内置TCP服务器
  14. Adobe Dreamweaver CS6(或者CC 2018.2 SP)安装失败解决方案
  15. U3D中物体渐隐和闪烁的方法
  16. RK3588 调试 phy
  17. 用C语言打印简单图案(爱心\圆形\三角形等)
  18. vue+element-ui 动态加载本地图片
  19. 【Python爬虫】MongoDB爬虫实践:爬取虎扑论坛
  20. 【QTdesigner】课时37.按钮控件(QPushButton)【pyqt5+QTdesigner模式】

热门文章

  1. 永洪bi_永洪bi相关优惠价格-永洪bi的技术博客问答-阿里云
  2. linux自动挂载ipsan,RedhatLinux挂载IPSAN(iScsi协议)
  3. 安全防范趋势、信息安全管理、隐私保护
  4. android 接入腾讯信鸽
  5. 1995-2019,中国互联网产品的发展与变革
  6. 关于尼德霍夫VS塔勒布: 今年赚钱最多的,居然是个牧羊人(作者:老喻)
  7. ps使用仿制图章工具,图案图章工具
  8. python运维自动化老男孩_Day1 老男孩python自动化运维课程学习笔记
  9. 01web前端笔试试题
  10. 【AI视野·今日CV 计算机视觉论文速览 第200期】Tue, 18 May 2021