cmd运行的java文件咋是乱码

Python015

cmd运行的java文件咋是乱码,第1张

当我们不加设置就编译时,相当于使用了参数:javac -encoding gbk XX.java,当然就会出现不兼容的情况。

解决方法

1、转换成UTF-8编码格式,但仍然有错解决办法是:应该使用-encoding参数指明编码方式:javac -encoding UTF-8 XX.java

2、开始-->计算机-->鼠标反键(鼠标右键)-->属性-->高级系统设置-->环境变量-->系统变量新建。然后输入:“JAVA_TOOL_OPTIONS”变量,值为“-Dfile.encoding=UTF-8”然后确定、确定、在确定后。新开命令行窗口,再次输入javac命令。

要明白,用filewriter读取文件采取的是平台默认编码(视操作系统而定)。当要写入的文本文件编码和平台默认编码不一致时,就会出现中文乱码的情况。这时可以使用filewriter 的父类OutputStreamWriter来读取。OutputStreamWriter允许用户指定编码方式,代码为:

FileInputStream fis=new FileInputStream("文件路径");

OutputStreamWriter osw=new OutputStreamWriter(fis,"文本文件的编码方式(ANSI,UTF-8...)")

osw.write()

这样写入的编码可以保证和源文本文件编码一致,就不会出现乱码了。

1、浏览器调用jsp,html等页面中文显示乱码

此情况需满足两个要求:

(1)文件本身是以utf-8编辑保存的(myEclipse中在properties中鼠标右键选择utf-8)

(2)浏览器用utf-8解析:

(手动)==>在浏览器中右键选择编码格式为utf-8

(智能)==>在文件中写入如: <meta name="content-type" content="text/htmlcharset=UTF-8"> 通过<meta>标签模拟response头,起到告诉浏览器用utf-8的编码解析

(智能)==>response.setContentType("text/htmlcharset=UTF-8")起到告诉浏览器用utf-8的编码解析

常用:

<meta name="content-type" content="text/htmlcharset=UTF-8">或<meta charset="utf-8">

<%@ pageEncoding="utf-8"%>

<?xml encoding="UTF-8"?>

2、通过浏览器调用servlet,页面显示乱码。

Servlet乱码分为request乱码和response乱码;

(1)response乱码问题

解决方法:

在网上很有效的解决方法是添加:

response.setCharacterEncoding("UTF-8")

解决不了,后来又搜到一条解决方法是:

response.setContentType("text/htmlcharset=utf-8")或者 response.setHeader("content-type","text/htmlcharset=UTF-8")告诉浏览器用utf-8解析。(setHeader是HttpServletResponse的方法。如果想在拦截器Filter中设置字符编码,则无此方法,因为Filter的doFilter方法的参数类型是ServletResponse)

两句都填上,后来终于解决了这个问题;

其实我们应该思考一下本质:

response.setContentType("text/htmlcharset=UTF-8")目的是为了控制浏览器的行为,即控制浏览器用UTF-8进行解码;

response.setCharacterEncoding("UTF-8")目的是用于response.getWriter()输出的字符流的乱码问题。如果是response.getOutputStream()是不需要此种解决方案的,因为这句话的意思是为了将response对象中的数据以UTF-8解码后的字节流发向浏览器;