文档章节

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

一口今心
 一口今心
发布于 2017/08/28 16:27
字数 628
阅读 40
收藏 0
点赞 0
评论 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
博文 22
码字总数 9508
作品 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
codeblocks总是出现中文乱码,怎么办?

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

骑着小猪啪啪啪
01/04
0
0
Python2 和 Python3 中默认编码的差异

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

sylan215
前天
0
0
win7 命令行 utf-8 汉字乱码

以前用命令行的时候也经常遇到这个问题,貌似从没想过纠正一下,看到第九街上的这篇文章特别收藏一下。 在dos下执行一个PHP文件的时候,由于输出文件文字是UTF8编码,所以显示出现了乱码,如...

PHP007
2012/09/08
0
2
Go 在windows命令行下中文输出乱码问题解决方法

Windows下CMD执行Go中文乱码问题解决方法 因为Go的编码时UTF-8,而cmd的活动页是cp936(GBK),因而乱码。解决方法: 如何在DOS窗口中显示UTF-8字符 在中文Windows系统中,如果一个文本文件是...

羊驼君
2013/06/15
1K
4
ssh乱码问题处理

以我自己的了解,在进行struts开发的过程中,总也是出现很多的乱码问题 ,但归根到底,也只是以下三种情况: ㈠页面显示中文乱码 ㈡传递参数中文乱码 ㈢国际化资源文件乱码 下面就这三中情况...

物理代码男
2013/08/25
270
0
控制台程序的中文输出乱码问题,printf,wprintf与setlocale

解决gcc编译时的乱码问题 今天发现用securecrt登陆时,gcc编译出错时会出现乱码,但直接在主机的窗口界面下用Shell编译却没有乱码。查看了一下当时的错误描述,发现它的引号是中文引号,导致...

mickelfeng
2013/07/13
0
0
Java IO流(三)

本篇文章主要围绕字符编码展开,为了能够更好地讲述这一主题,我将从字节流操作中文数据开始。 字节流操作中文数据 假设编写有如下程序,代码贴出如下: 此时运行以上程序,可以发现在cn.tx...

yerenyuan_pku
2017/10/14
0
0
DOS窗口的编码页从UTF-8调回GBK

之前在DOS窗口操作MySQL数据库的时候,将编码页从GBK设置成了UTF-8,解决了在DOS窗口显示MySQL数据库中的表中的中文字符出现乱码的问题。但是除此之外,DOS窗口显示的其他中文字符都是乱码。...

天蚕宝衣
2016/05/11
55
3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

zk实战--rpc框架集群化

在看此篇内容时需要浏览下面内容 netty实战--手写rpc框架 前文功能简介以及功能扩充 利用netty来实现一个点对点的rpc调用。客户端和服务端都是靠手写地址进行socket同学的,无法1对多,也无法...

xpbob
20分钟前
8
0
springboot 发送邮件

获取授权码 添加配置 # 账号和密码spring.mail.username=aaa@qq.comspring.mail.password=bbb# 服务器地址spring.mail.host=smtp.qq.comspring.mail.properties.mail.smtp.ssl.en...

阿豪boy
20分钟前
0
0
如何使用GNU Ring?

文章名:如何使用GNU Ring? 作者:冰焰火灵X 1079092922@qq.com 文章许可:CC BY-SA 4.0 ##1. 安装 下载GNU Ring 点击左边选择你的系统版本(这里以 GNU/Linux 为例,我使用的是Mint 18.3)...

ICE冰焰火灵X
23分钟前
1
0
深入理解springMVC

什么是spring MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而...

Java填坑之路
29分钟前
1
0
《射雕英雄传》书摘

1. 我虽是个飘泊江湖的贫家女子,可不是低三下四、不知自爱之人。你如真心爱我,须当敬我重我。我此生决无别念,就是钢刀架颈,也决意跟定了你。将来……将来如有洞房花烛之日,自然……自能...

k91191
39分钟前
0
0
解决:modal中datePicker 选中时,会触发modal的hidden.bs.modal事件

最近项目中发现了一个bug,具体表现为选中模态框上datepicker组件上的日期时,会触发模态框的关闭事件,导致数据编辑无法正常进行。网上搜索了下,解决方法如下: $('.datepicker').on('hid...

Funcy1122
43分钟前
0
0
Redis分布式锁的正确实现方式

前言 分布式锁一般有三种实现方式: 1.数据库乐观锁 2.基于Redis的分布式锁; 3.基于Zookeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis...

大海201506
今天
1
0
ClassNotFoundException: javax.el.ELManager

这个是因为tomcat7中的el-api2.2,有些版本太低,建议升级tomcat到8.0,利用el-api3.0就会解决这个问题。

无语年华
今天
0
0
Jvm堆内存的划分结构和优化,垃圾回收详解(详细解答篇)

在JVM中堆空间划分如下图所示 上图中,刻画了Java程序运行时的堆空间,可以简述成如下2条 1.JVM中堆空间可以分成三个大区,新生代、老年代、永久代 2.新生代可以划分为三个区,Eden区,两个幸...

嘻哈开发者
今天
1
0
CentOS 7.4 设置系统字符编码

1.语言变量LANG在 /etc/locale 文件中。 2.可以通过/ect/profile 来修改LC_TYPE 变量的值 添加如下代码 export LC_ALL="zh_CN.GBK" export LANG="zh_CN.GBK" 到profile文件中,变量的可以修改...

qimh
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部