精华内容
下载资源
问答
  • java出现乱码的原因与解决方法详解

    千次阅读 2021-03-08 18:19:59
    java在字符串中统一用Unicode表示。(推荐:java视频教程)对于任意一个字符串:String string = “测试字符串”;如果源文件是GBK编码,操作系统默认环境编码也为GBK,那么编译的时候,JVM将按照GBK编码将字节数组解析...

    945ed12aa5423cc04ee9635724961c18.png

    java在字符串中统一用Unicode表示。(推荐:java视频教程)

    对于任意一个字符串:String string = “测试字符串”;

    如果源文件是GBK编码,操作系统默认环境编码也为GBK,那么编译的时候,JVM将按照GBK编码将字节数组解析为字符,然后将字符转换为Unicode格式的字节数组,作为内部存储(字节数组→字符→Unicode字节数组)

    当打印这个字符串时,JVM根据操作系统本地的语言环境,将Unicode转换为GBK,然后操作系统将GBK格式的内容显示出来。

    当源码文件是UTF-8, 我们需要通知编译器源码的格式,javac -encoding utf-8 … , 编译时,JVM按照utf-8 解析成字符,然后转换为unicode格式的字节数组, 那么不论源码文件是什么格式,同样的字符串,最后得到的unicode字节数组是完全一致的,显示的时候,也是转成GBK来显示(跟OS环境有关)

    乱码是如何产生的?

    本质上都是由于字符串原本的编码格式与读取时解析用的编码格式不一致导致的。

    乱码指的是程序显示出来的字符文本无法用任何语言去解读。一般情况下会包含大量的?。乱码问题是所有计算机用户或多或少会遇到的问题。

    造成乱码的原因就是因为使用了错误的字符编码去解码字节流,因此当我们在思考任何跟文本显示有关的问题时,请时刻保持清醒:当前使用的字符编码是什么。只有这样,我们才能正确分析和处理乱码问题。

    例如最常见的网页乱码问题。如果你是网站技术人员,遇到这样的问题,需要检查以下原因:

    1、服务器返回的响应头Content-Type没有指明字符编码

    2、网页内是否使用META HTTP-EQUIV标签指定了字符编码

    3、网页文件本身存储时使用的字符编码和网页声明的字符编码是否一致

    java代码中的乱码问题如何解决呢?

    例如:String s = “测试字符串”;System.out.println( new String(s.getBytes(),"UTF-8"));

    //错误,因为getBytes()默认使用GBK编码, 而解析时使用UTF-8编码,肯定出错。

    其中getBytes()是将Unicode转换为操作系统默认格式的字节数组,即“测试字符串”的GBK格式,new String (bytes, Charset) 中的charset 是指定读取byte的方式,这里指定为UTF-8,即把bytes的内容当做UTF-8来读取。

    如下两种方式得到的结果都是正确的,因为它们的源内容编码和解析用的编码是一致的。System.out.println( new String(s.getBytes(),"GBK"));

    System.out.println( new String(s.getBytes("UTF-8"),"UTF-8"));

    那么,如何利用getBytes 和 new String() 来进行编码转换呢?

    网上流传着一种错误的方法:GBK--> UTF-8: new String( s.getBytes("GBK") , "UTF-8);

    这种方式是完全错误的,因为getBytes 的编码与 UTF-8 不一致,肯定是乱码。

    但是为什么在tomcat 下,使用 new String(s.getBytes(“iso-8859-1”) ,”GBK”) 却可以用呢?

    答案是:

    tomcat 默认使用iso-8859-1编码, 也就是说,如果原本字符串是GBK的,tomcat传输过程中,将GBK转成iso-8859-1了,默认情况下,使用iso-8859-1读取中文肯定是有问题的。

    那么我们需要将iso-8859-1 再转成GBK, 而iso-8859-1 是单字节编码的,即他认为一个字节是一个字符, 那么这种转换不会对原来的字节数组做任何改变,因为字节数组本来就是由单个字节组成的。

    如果之前用GBK编码,那么转成iso-8859-1后编码内容完全没变, 则 s.getBytes(“iso-8859-1”) 实际上还是原来GBK的编码内容则 new String(s.getBytes(“iso-8859-1”) ,”GBK”) 就可以正确解码了。 所以说这是一种巧合。

    如何正确的将GBK转UTF-8 ?(实际上是unicode转UTF-8)//利用getBytes将unicode字符串转成UTF-8格式的字节数组,然后用utf-8 对这个字节数组解码成新的字符串

    new String( s.getBytes("utf-8") , "utf-8");

    UTF-8 转GBK原理也是一样

    new String( s.getBytes("GBK") , "GBK");

    其实核心工作都由getBytes(charset)做了。getBytes的JDK描述:Encoding this String into a sequence of bytes using the named charset,storing the result into a new byte array.OutputStreamWriter w1 = new OutputStreamWriter(new FileOutputStream("D:\\file1.txt"),"UTF-8");

    InputStreamReader( stream, charset)

    可以帮助我们轻松的按照指定编码读写文件。

    附录:

    HttpClient post请求中文乱码问题解决

    最近接到现场同事反馈,在掉接口的过程中,厂家收到的请求报文中文是乱码的。我检查了版控的代码,找到如下解决办法:

    原始代码(中文乱码):HttpPost httpPost = new HttpPost(url);

    DefaultHttpClient httpClient = new DefaultHttpClient();

    //请求头

    httpPost.setHeader("Accept", MediaType.APPLICATION_JSON);

    httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");

    //请求实体

    StringEntity reqEntity = new StringEntity(reqStr);

    httpPost.setEntity(reqEntity);

    //获取响应

    HttpResponse httpResp = httpClient.execute(httpPost);

    HttpEntity respEntity = httpResp.getEntity();

    解决办法:方法一:

    //请求实体

    HttpEntity reqEntity = new ByteArrayEntity(reqStr.getBytes("UTF-8"));

    //StringEntity reqEntity = new StringEntity(reqStr);

    httpPost.setEntity(reqEntity);

    方法二:

    //请求实体

    StringEntity reqEntity = new StringEntity(reqStr,Charset.forName("UTF-8"));

    httpPost.setEntity(reqEntity);

    更多java知识请关注java基础教程栏目。

    展开全文
  • cmd中输入java出现乱码

    千次阅读 2020-08-21 01:45:07
    这段时间在学java,遇到这个问题时在网上搜了一下,找到两个方案: 1、在cmd中运行chcp 65001,改回utf-8编码; 无效!!! 2、win+r调出注册表进行更改: 无效!!! 这还真邪门了,这时看到一个帖子,说更改...

    做个记录,希望能帮到有同样问题的朋友!

    这段时间在学java,遇到这个问题时在网上搜了一下,找到两个方案:
    1、在cmd中运行chcp 65001,改回utf-8编码;
    无效!!!

    2、win+r调出注册表进行更改:
    无效!!!

    这还真邪门了,这时看到一个帖子,说更改windows语言区域设置,我就想起来了,前些日子我按照网上的教程将windows界面语言改为English,但是改了半天却没成功,我清楚记得对区域设置那里做过更改,终于有眉目了;

    下面开始改回来:
    进入设置找到“语言”,有的系统是“区域和语言”,自己看自己是哪一种;

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    改成这个样子就可以了,重启之后就可以了;

    输入java就没有乱码了,搞定!!!
    在这里插入图片描述

    展开全文
  • java乱码解决方法

    2013-08-05 14:42:47
    解决java web开发中遇到的前后台传值乱码问题。
  • 如何处理java乱码

    千次阅读 2021-03-01 10:02:35
    为什么说乱码是中国程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的!如果中国的程序员不会遇到乱码,那么只有使用汉语编程。汉语编程是怎么回事,我...

    为什么说乱码是中国程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的!

    如果中国的程序员不会遇到乱码,那么只有使用汉语编程。汉语编程是怎么回事,我也不大清楚。

    我写这个不是讲解中英文之间的差距,解码等,我只是结合我遇到的乱码问题,然后做了一个解决乱码的总结。

    1、utf8解决JSP中文乱码问题

    一般说来在每个页面的开始处,加入:

    2.如果项目里面有乱码:

    右击项目名—>properties->Resource->Text file encoding中点击->other选择UTF-8

    3、Tomcat 5.5中文乱码

    1)只要把%TOMCAT安装目录

    %/   webapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class文件拷到你的webapp目录/filters下,如果没有filters目录,

    就创建一个。

    2)在你的web.xml里加入如下几行:

    Set   Character   Encoding

    filters.SetCharacterEncodingFilter

    encoding

    GBK

    Set   Character   Encoding

    /*

    4、get方式的解决办法

    打开tomcat的server.xml文件,找到区块,加入如下一行:

    URIEncoding=”GBK”

    完整的应如下:

    port="80"   maxThreads="150"   minSpareThreads="25"

    maxSpareThreads="75"  enableLookups="false" redirectPort="8443"

    acceptCount="100" debug="0"  connectionTimeout="20000"

    disableUploadTimeout="true"   URIEncoding="GBK"   />

    5.jar包中有乱码

    1)在eclipse菜单栏中,Window–>Preferences–>General–>Content types将JAR Content , Java Class File 的Default encoding都设置为你要的编码

    2)光设置上面的还不行,还需要再设置Workspace的编码。Window–>Preferences–>General–>Workspace,将Text file encoding的默认编码也设置为

    和上面一致的编码。

    3)保存,重启Eclipse即可发现乱码问题解决了。

    6.html5 utf-8中文乱码的解决方法

    HTML5 UTF-8出现中文乱码的情况,应该有很多的朋友都有遇到吧,用记事本写,保存后在网页上运行出现了乱码,换成GB2312能正确显示中文,

    下面就为大家探讨下具体的解决方法

    HTML5的标题

    HTML5的内容!Hello

    用记事本写,保存后在网页上运行出现了乱码,换成GB2312能正确显示中文

    代码没有问题,问题就出记事本身上。 只是告诉浏览器要用utf-8来解释,而文档的编码,是在你保存时的选择决定的,

    如果保存ANSI 然后用utf-8解释,肯定是乱码,记事本的话,默认保存的文件格式是ANSI,所以在保存的时候要修改为uif-8。

    7.js 文件中文显示乱码

    Javascript文件XX.js编辑保存时有一种编码方案(如GBK),当打开文件的时候所用的编码(如UTF-8)和保存时的编码方案不一致时,则会出现中文显示乱码。

    解决方案:

    (1) 用编辑器打开浏览的时候,选择和原文件编码(如GBK)一致的编码方式查看,则不会出现乱码;

    (2)在eclipse中的package explorer中选中乱码的XX.js,右键菜单中选择properties,在Text file encoding中选择与XX.js编辑保存时的编码(如GBK),则可以正常显示;

    8.网站页面中JavaScript中中文字段乱码

    在eclipse或者编辑器中XX.js中中文显示正常,在页面调用XX.js,执行后页面结果中中文字段显示乱码。

    解决方案:

    在引用XX.js的页面上“显示”加上XX.js文件的编码方式,使之与XX.js文件的本身的编码方式(如GBK)保持一致。

    建议:

    (1)在用Eclipse或者Myeclipse新建XX.js,进行编辑时,建议先将Text file encoding改为UTF-8,然后进行编辑保存。

    (2)用文本文档或者其他编辑器编辑保存XX.js, 建议以UTF-8的编码方式保存。

    (3) 在引用XX.js的页面上“显示”加上XX.js文件的编码方式UTF-8。

    展开全文
  • 今天小编就为大家分享一篇完美解决Java获取文件路径出现乱码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了Java中HttpServletResponse响应中文出现乱码问题的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
  • java在cmd运行时出现乱码解决方法

    千次阅读 2021-02-12 16:26:20
    cmd中执行java文件出现乱码如下:(推荐:java视频教程)原因:由于JDK是国际版的,在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则javac.exe首先获得我们操作系统默认采用的编码格式,...

    e7566e96959756ed26f44719b1b846f1.png

    cmd中执行java文件出现乱码如下:(推荐:java视频教程)

    58f963a2f41289fcb753ac48a20b0d73.png

    原因:

    由于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,当然就会出现不兼容的情况。

    解决方法:

    1、转换成UTF-8编码格式,但仍然有错

    解决办法是:应该使用-encoding参数指明编码方式:javac -encoding UTF-8 XX.java

    2、开始-->计算机-->鼠标反键(鼠标右键)-->属性-->高级系统设置-->环境变量-->系统变量

    新建。然后输入:“JAVA_TOOL_OPTIONS”变量,值为“-Dfile.encoding=UTF-8”

    然后确定、确定、在确定后。新开命令行窗口,再次输入javac命令。

    更多java知识请关注java基础教程栏目。

    展开全文
  • 用CMD运行时Java出现乱码的解决办法 ——————————————————————————————————————— 很多Java的初学者,第一次都会用TXT文本文档进行我们Hello Java程序的编写。 方法如下: ...
  • 主要介绍了Java避免UTF-8的csv文件打开中文出现乱码的方法,结合实例形式分析了java操作csv文件时使用utf-16le编码与utf8编码相关操作技巧,需要的朋友可以参考下
  • JAVA初学者遇到的常见问题就是中文乱码问题,但是导致中文乱码的原因有很多,经常搞得焦头烂额。这个视频帮助大家解决日常编程中常见的中文问题。
  • 在我们平时用记事本在命令行窗口使用javac 编译时,有时候会出现 “HelloWorld.java:2: 错误: 编码GBK的不可映射字符杩欐槸涓?涓畝鍗曠殑鎵撳嵃 HelloWorld 鐨勭▼搴?HelloWorld.java:2: 错误: 编码GBK的不可映射...
  • 出现问题:编码gbk的不可映射字段原因:.java文件的编码与cmd命令执行器使用的编码不一致我们使用的.java文件的编码为UTF-8Cmd默认使用的编码为GBK:解决方式统一编码:方法1:更改源文件编码为GBK与cmd.exe对应更改...
  • 主要为大家详细介绍了java实现PPT转PDF出现中文乱码问题的解决方法,进行了详细的问题分析,需要的朋友可以参考下
  • 当输出中文内容时,可能会出现乱码的情况,遇到这种情况不要慌,这只是你的xxx.java文件保存时的编码问题,只要另存为ANSI编码就可以解决了。下面我们来看看具体的操作步骤: 过程步骤 1.创建java文件 首先,在...
  • 使用CMD运行java程序乱码解决方法

    千次阅读 2018-12-29 13:55:07
    今天在使用cmd运行java出现乱码,上网查资料找到了暂时的解决方案,先记录下来。 1.打开cmd窗口 2.输入命令:chcp 65001 3.再次运行java程序即可 这种方法只能在打开的窗口生效,关闭后重新打开窗口就不行了。 ...
  • 前言 对于刚刚学习Java程序的同学来说,可能会遇到使用命令行来...当输出中文内容时,可能会出现乱码的情况,遇到这种情况不要慌,这只是你的xxx.java文件保存时的编码问题,只要另存为ANSI编码就可以解决了。 ...
  • java代码里出现中文乱码怎么解决

    万次阅读 2019-04-22 14:51:02
    解决前: 记得重启eclipse 完成
  • Java丨Cmd运行Jar出现乱码问题

    万次阅读 多人点赞 2018-08-18 02:49:23
    今天做项目的时候遇到一个很头疼的问题——无论在Java代码中如何统一编码为UTF8,在IDE中运行是完全没问题的,但打包成Jar通过Bash和CMD运行,都会出现中文乱码问题。起初是觉得Java编译时编码出现了问题,但经过几...
  • 下面小编就为大家带来一篇Java读取properties配置文件时,出现中文乱码的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了java 中的乱码问题汇总相关资料,并附解决方案,出现乱码问题有编码与解码,字节流与字符流出现乱码,等其他情况,需要的朋友可以参考下
  • java中文乱码解决问题

    2015-04-15 11:26:41
    java中文乱码解决问题
  • 在编译出错时,报错会出现乱码,无法显示中文。 解决办法: 打开文件-首选项-设置 在用户设置中添加: {"code-runner.runInTerminal": true} 然后按ctrl+s保存。 如图:直接在右边区域输入即可。...
  • java编译乱码解决方法

    千次阅读 2021-02-13 01:25:36
    Java编译源代码时,默认会从操作系统获取codepage,若你安装操作系统时不小心安装了英文版的,可能就会在编译java源码时产生乱码。请看下面测试代码:package com.test;public class Run {public static void main...
  • java程序输出中文乱码解决方案

    千次阅读 多人点赞 2019-10-16 14:18:59
    在一些Java程序中我们输入的中文在输出时会出现乱码的情况,一下是解决方案: 1,在编译xx.java文件时使用javac -encoding utf-8 xx.java语句进行编译可以解决乱码问题 2,先把java文件改为txt打开,选择左上...
  • 如图,第一次加了UTF-8那句能正常编译,第二次不加直接编译却报错。 前几天都没出现这问题的。 ![图片说明](https://img-ask.csdn.net/upload/201704/21/1492776432_370800.jpg)
  • vscode:java运行时终端输出乱码

    千次阅读 2020-07-18 03:50:09
    但是后来使用时发现会出现这种情况:”输入中文后,输出中文会乱码或者不显示”。这一看就是老问题了,编码问题。 解决办法 从几个角度来进行寻找解决办法:windows系统编码,vscode的文件编码,java运行时编码...
  • java汉字乱码解决办法

    千次阅读 2021-02-12 16:30:27
    自从接触Java和JSP以来,就不断与Java的中文乱码问题打交道,现在终于得到了彻底的解决,现将我们的解决心得与大家共享。一、Java中文问题的由来Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨...
  • java用控制台输出时出现乱码怎么办

    千次阅读 2021-02-25 19:54:36
    java用控制台输出时出现乱码怎么办发布时间:2020-06-26 16:00:24来源:亿速云阅读:113作者:Leahjava用控制台输出时出现乱码怎么办?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,...
  • VSCODE运行java代码,中文乱码解决方法

    千次阅读 多人点赞 2019-10-20 13:40:05
    百度了很多方法,都无法解决乱码问题,后来试了很多方法才解决的。 在这个目录C:\VSCode\data\extensions\vscjava.vscode-java-debug-0.22.0\scripts下有个 launcher.bat文件,修改里面的内容如下: @echo off ...
  • eclipse打开Java文件出现乱码的解决方法 怎么用eclipse打开java文件 比如我想打开这个java文件,可以先选中这个文件,鼠标右键复制,然后打开elipse,在你平时工作的包内直接ctrl+v 就可以看到contain包里有了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 219,358
精华内容 87,743
关键字:

java出现乱码

java 订阅