文档章节

DOS运行jar程序输出文件中文乱码

一口今心
 一口今心
发布于 2017/08/28 16:27
字数 628
阅读 82
收藏 0

http://blog.csdn.net/gyz666/article/details/68065110

我的问题和如上博客一样即:

问题:程序在eclipse中进行开发,涉及一些IO操作,且需要在不同的机子上跑,因此为了方便,将代码打包成了jar包。但是发现在eclipse中结果运行正确,在cmd中运行结果却错误。

我的需求:从多个记事本文件中读取数据,然后写入一个记事本中。

我的问题:写入记事本后中文乱码。

如何解决:以键值的形式在启动jvm时规定一些输入参数(cmd中执行时,只需在java后面加上-Dfile.encoding=utf-8即可

造成的原因思考:

https://jingyan.baidu.com/article/0f5fb099f170566d8334eabf.html

如上经验所说:

 由于JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们操作系统默认采用的编码格式,也即在编译java程序时,若我们不指定源程序文件的编码格式,JDK首先获得操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式,如WIN2k,它的值为GBK),然后JDK就把我们的java源程序从file.encoding编码格式转化为JAVA内部默认的UNICODE格式放入内存中。然后,javac把转换后的unicode格式的文件进行编译成.class类文件,此时.class文件是UNICODE编码的,它暂放在内存中,紧接着,JDK将此以UNICODE编码的编译后的class文件保存到我们的操作系统中形成我们见到的.class文件。对我们来说,我们最终获得的.class文件是内容以UNICODE编码格式保存的类文件,它内部包含我们源程序中的中文字符串,只不过此时它己经由file.encoding格式转化为UNICODE格式了。当我们不加设置就编译时,相当于使用了参数:javac -encoding gbk XX.java,当然就会出现不兼容的情况。

我的编译:我使用编码格式为UTF-8的eclipse工具打包生成jar文件

我的运行:使用操作系统自带的DOS环境(GBK编译)解释运行,并写入ANSI格式的记事本

我的生成:带有ANSI中文乱码的文件,使用工具强行转换为utf-8,也会有乱码的中文和格式

 

© 著作权归作者所有

共有 人打赏支持
一口今心
粉丝 0
博文 27
码字总数 10380
作品 0
西安
程序员
私信 提问
Windows10 命令行中文显示乱码,无法输入中文,查看中文文件夹和文件名称显示为乱码

最近,新购的OMEN HP Laptop,打开dos窗口,PIMG www.51ct.com,中文显示为乱码。 经过两天的百度,最后参考 http://blog.csdn.net/daxiang12092205/article/details/52748110 按如下操作,问...

lsh2018
2017/03/28
0
0
DOS命令的一些技巧总结(大纲)

1.设置dos启动的默认路径 安全模式登录(开机启动按F8),依次右键单击我的电脑--管理--本地用户和组-用户--administrator--配置文件--本地路径--输入“C:WINDOWSsystem32”,这样我们就能使...

述而不作
2012/02/29
0
0
Python2 和 Python3 中默认编码的差异

最近在使用 Python3.4 做一些脚本实现,发现对于编码的处理上和 Python2.6 有很大的不同,就此机会把相关知识做个梳理,方便需要的时候查阅。 先说下概念和差异: 脚本字符编码:就是解释器解...

sylan215
07/15
0
0
codeblocks总是出现中文乱码,怎么办?

coding的时候,最折磨人的莫过于一个IDE对中文支持不够好. 最近在用codeblocks,就又一次碰到这问题(为什么不自禁的说'又'...?) 好!言归正传,此问题我想到了2种解决的办法: 1.简单粗暴型的:强制...

骑着小猪啪啪啪
01/04
0
0
使用Aspose将Word转成Pdf后中文乱码问题

场景: 使用Aspose.Word将word文档转换成pdf。 本地Windows开发环境,pdf文件正常。 本地Ubuntu系统上转换出的pdf也正常。 但是将程序部署到CentOS的服务器上,pdf的中文就都是乱码了。 解决...

Jarhf
12/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 修改导航显示选项

选择 子页面(Child pages)来在边栏中查看当前页面的子页面。 选择 页面树(Page tree)来查看整个空间的页面树,扩展当前的页面。 你也可以选择是否完全隐藏导航显示选项或者添加你希望可见...

honeymose
27分钟前
0
0
Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
3
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
5
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部