首页 > 编程知识 正文

java字符集编码乱码问题(java输出乱码是什么问题)

时间:2023-12-10 13:48:24 阅读:314069 作者:WFPO

本文目录一览:

为什么java编程中写的汉字变成乱码了???

你的编码格式选择的不对,右键单击项目,点击Properties:

将格式换成GBK或者UTF-8就行了

[Java]如何解决乱码问题

乱码的话,分为几个位置的乱码。

一、是JSP页面乱码问题,

解决方式:%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%

二、后台向前端传输字符串的的乱码

解决方式: response.setContentType("text/html;charset=UTF-8");

response.setCharacterEncoding("UTF-8");

三、Ajax异步传参时的乱码问题

解决方法:contentType:"application/x-www-form-urlencoded; charset=utf-8",

四、myEclips或Eclips打开文件时乱码

解决方法:右键该文件-porperties-把该文件调为UTF-8的格式

纯手写,请给采纳

java中文乱码,能说下string.getBytes()和new String()转码是,具体点。

1、Java中,【String.getBytes(String decode)】的方法,会根据指定的decode,编码返回某字符串在该编码下的byte数组表示,例如:

byte[] b_gbk = "中".getBytes("GBK");

byte[] b_utf8 = "中".getBytes("UTF-8");

byte[] b_iso88591 = "中".getBytes("ISO8859-1")

上面三行代码表示:分别返回“中”这个汉字在GBK、UTF-8和ISO8859-1编码下的byte数组表示,此时b_gbk的长度为2,b_utf8的长度为3,b_iso88591的长度为1。

2、而通过【new String(byte[], decode)】的方式来还原这个“中”字时,实际是使用decode指定的编码来将byte[ ]解析成字符串,例如:

String s_gbk = new String(b_gbk,"GBK");

String s_utf8 = new String(b_utf8,"UTF-8");

String s_iso88591 = new String(b_iso88591,"ISO8859-1");

s_gbk和s_utf8都是“中”,而只有s_iso88591是一个不认识 的字符,因为ISO8859-1编码的编码表中,根本就没有包含汉字字符,当然也就无法通过"中".getBytes("ISO8859-1")。

因此,通过【String.getBytes(String decode)】方法来得到byte[ ]时,要确定decode的编码表中确实存在String表示的码值,这样得到的byte[ ]数组才能正确被还原。

扩展资料

java中文编码避免乱码

1、为了让中文字符适应某些特殊要求(如http header头要求其内容必须为iso8859-1编码),可能会通过将中文字符按照字节方式来编码的情况,比如:

String s_iso88591 = new String("中".getBytes("UTF-8"),"ISO8859-1")

2、上述例子中的s_iso8859-1字符串实际是三个在 ISO8859-1中的字符,在将这些字符传递到目的地后,目的地程序再通过相反的方式:

String s_utf8 = new String(s_iso88591.getBytes("ISO8859-1"),"UTF-8")

来得到正确的中文汉字。这样就既保证了遵守协 议规定、也支持中文。

3、String.getBytes(String decode)方法会根据指定的decode编码返回某字符串在该编码下的byte数组表示这里是encode ,not decode,从字符串到字节数组是编码的过程,从字节数组到字符串(即 new String(byte[] , charsetname))才是解码的过程。

参考资料:百度百科-UTF-8

如何解决JavaEE开发中字符编码出现乱码问题

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

此情况需满足两个要求:

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

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

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

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

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

常用:

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

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

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

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

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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。