从第三方下载的java源文件,打开查看里面的中文全部是乱码,无论你使用什么字符编码集都无法正常显示,该文件是用UTF-8编码存档的,使用UTF-8解码也同样是乱码,相信很多人遇到类似的问题,我这里解决过一个经典案例,大家看看,是不是可以给你们提供有用的思路呢?

java源文件的部分内容如下:

import com.htlwk.elts.util.Config;/*** ʵÌåÊý¾Ý·ÃÎÊÀà*  ´ËÀàÓÐÁ½¸ö¹¦ÄÜ:*      1:¶ÁÈ¡²¢½âÎöÅäÖÃÎļþ,½«Êý¾ÝÒÔʵÌåÀàµÄʵÀý±£´æ*      2:ΪÆäËûÀàÌṩÊý¾Ý(ÌṩÏàÓ¦Êý¾ÝµÄʵÌåÀàʵÀý).*/
public class EntityContext {private Config config;//ÓÃÓÚ¶ÁÈ¡propertiesÎļþµÄÀà/*** ʹÓÃHashMap±£´æËùÓеÄÓû§¶ÔÏó* key:Óû§µÄID* value:¶ÔÓ¦´ËÓû§µÄUser¶ÔÏó* ʹÓÃHashMap±£´æµÄºÃ´¦ÔÚÓÚ,¸ù¾Ý³ÌÐòµÄÐèÇó½øÐзÖÎöºó·¢ÏÖ,µ±ÓÃ* »§ÊäÈëIDºÍÃÜÂë½øÐеǼʱ,ÎÒÃÇÏë»ñÈ¡¶ÔÓ¦Õâ¸öIDµÄÓû§Ê±,ʹÓÃ* HashMap¸üÀûÓÚ²éÕÒ´ËÓû§(ʡȥʹÓÃList»¹Ðè×Ô¼ºÐ´±éÀú¼°ÅжϵÄ* Âß¼­,¶øÇÒHashMap¿ÉÌá¸ß²éѯЧÂÊ)*/private Map<Integer,User> users =new HashMap<Integer,User>();/*** key:¿¼ÌâµÄÄÑÒ׶È(level)* value:¶ÔÓ¦ÄѶȵÄÒ»×鿼ÌâList<Question>*/

有经验的程序员就是靠猜测,认为这很有可能是latin1编码导致中文乱码,而在国内很多程序员会使用GBK编码存档,而此文件曾经上传到云盘保存过,所以大致的编码路径如下:

根据上图的编码路径,我们写段代码检验下,是否能够取到正确的Unicode编码从而正常显示中文字符,代码如下:

package com.htlwk.day04.demo01;public class ErrorCodeConversion {static String s ="import com.htlwk.elts.util.Config;\n" +"\n" +"/**\n" +" * ʵÌåÊý¾Ý·ÃÎÊÀà\n" +" *  ´ËÀàÓÐÁ½¸ö¹¦ÄÜ:\n" +" *      1:¶ÁÈ¡²¢½âÎöÅäÖÃÎļþ,½«Êý¾ÝÒÔʵÌåÀàµÄʵÀý±£´æ\n" +" *      2:ΪÆäËûÀàÌṩÊý¾Ý(ÌṩÏàÓ¦Êý¾ÝµÄʵÌåÀàʵÀý).\n" +" */\n" +"public class EntityContext {\n" +"  private Config config;//ÓÃÓÚ¶ÁÈ¡propertiesÎļþµÄÀà\n" +"  /**\n" +"   * ʹÓÃHashMap±£´æËùÓеÄÓû§¶ÔÏó\n" +"   * key:Óû§µÄID\n" +"   * value:¶ÔÓ¦´ËÓû§µÄUser¶ÔÏó\n" +"   * ʹÓÃHashMap±£´æµÄºÃ´¦ÔÚÓÚ,¸ù¾Ý³ÌÐòµÄÐèÇó½øÐзÖÎöºó·¢ÏÖ,µ±ÓÃ\n" +"   * »§ÊäÈëIDºÍÃÜÂë½øÐеǼʱ,ÎÒÃÇÏë»ñÈ¡¶ÔÓ¦Õâ¸öIDµÄÓû§Ê±,ʹÓÃ\n" +"   * HashMap¸üÀûÓÚ²éÕÒ´ËÓû§(ʡȥʹÓÃList»¹Ðè×Ô¼ºÐ´±éÀú¼°ÅжϵÄ\n" +"   * Âß¼\u00AD,¶øÇÒHashMap¿ÉÌá¸ß²éѯЧÂÊ)\n" +"   */\n" +"  private Map<Integer,User> users =\n" +"                  new HashMap<Integer,User>();\n" +"  \n" +"  /**\n" +"   * key:¿¼ÌâµÄÄÑÒ׶È(level)\n" +"   * value:¶ÔÓ¦ÄѶȵÄÒ»×鿼ÌâList<Question>\n" +"   */";public static void main(String[] args) {if (s != null){try{int length = s.length();byte[] buffer = new byte[length];//0x81 to Unicode 0x0081, 0x8d to 0x008d, 0x8f to 0x008f, 0x90 to 0x0090, and 0x9d to 0x009d.for (int i = 0; i < length; ++i){char c = s.charAt(i);if (c == 0x0081){buffer[i] = (byte) 0x81;} else if (c == 0x008d) {buffer[i] = (byte) 0x8d;} else if (c == 0x008f) {buffer[i] = (byte) 0x8f;} else if (c == 0x0090) {buffer[i] = (byte) 0x90;} else if (c == 0x009d) {buffer[i] = (byte) 0x9d;} else {buffer[i] = Character.toString(c).getBytes("latin1")[0]; // 使用latin1编码,得到GBK编码}}String result = new String(buffer, "GBK"); // 使用GBK解码得到正确Unicode编码System.out.println(result);} catch (Exception e) {e.printStackTrace();}}}}

执行程序后得到结果如下:

import com.htlwk.elts.util.Config;/*** 实体数据访问类*  此类有两个功能:*      1:读取并解析配置文件,将数据以实体类的实例保存*      2:为其他类提供数据(提供相应数据的实体类实例).*/
public class EntityContext {private Config config;//用于读取properties文件的类/*** 使用HashMap保存所有的用户对象* key:用户的ID* value:对应此用户的User对象* 使用HashMap保存的好处在于,根据程序的需求进行分析后发现,当用* 户输入ID和密码进行登录时,我们想获取对应这个ID的用户时,使用* HashMap更利于查找此用户(省去使用List还需自己写遍历及判断的* 逻辑,而且HashMap可提高查询效率)*/private Map<Integer,User> users =new HashMap<Integer,User>();/*** key:考题的难易度(level)* value:对应难度的一组考题List<Question>*/Process finished with exit code 0

解决文件内容的中文乱码_字符集_字符编码_字符编码方案相关推荐

  1. java输出txt乱码_Java程序输出txt文件内容时中文乱码怎么处理?

    中文乱码解决方案:代码如下,请参照public class TestStream {public static void main(String[] args) throws Exception{Da ...

  2. python读excel乱码_解决Python2.7读写文件中的中文乱码问题

    Python2.7对于中文编码的问题处理的并不好,这几天在爬数据的时候经常会遇到中文的编码问题.但是本人对编码原理不了解,也没时间深究其中的原理.在此仅从应用的角度做一下总结, 1.设置默认编码 在P ...

  3. php 上传乱码_如何解决php文件上传中文乱码问题

    php文件上传中文乱码的解决办法:首先打开相应的PHP文件:然后通过"iconv("UTF-8", "gbk",$name)"方法对文件名进 ...

  4. java读txt文件乱码_java读取txt文件时出现中文乱码怎么解决

    java读取txt文件时出现中文乱码怎么解决 发布时间:2020-06-25 15:27:31 来源:亿速云 阅读:105 作者:Leah java读取txt文件时出现中文乱码怎么解决?针对这个问题, ...

  5. linux打开word乱码,解决linux下openoffice word文件转PDF中文乱码的问题

    网上很多介绍是由于jdk中的没有字体导致乱码,而我遇到的是转换过程并未报错,但转换后的PDF中是乱码,尝试在jre/lib/fonts/中增加字体,还是不能解决问题,因此可以判断非jre字体问题,是l ...

  6. 解决 IntelliJ IDEA 中 .propertise 文件保存后中文乱码

    解决 IntelliJ IDEA 中 .propertise 文件保存后中文乱码 运行环境: IntelliJ IDEA 2021.3 (Ultimate Edition)   在 IntelliJ ...

  7. sqlserver中文显示问号_解决 SecureCRT 和 SecureFX 中文乱码

    引言 最近老是有小伙伴给我发消息说,下载的 SecureCRT 和 SecureFX 安装打开后连接了自己的服务器或虚拟机后会出现中文乱码,每次都要给一一回复,我倒没事,主要是有时候因为工作的原因,所 ...

  8. java读写html文件时出现中文乱码问题的解决方法

    最近在做HTML静态生成,需要从硬盘上把模版文件的内容读出来.然后,替换相关标签写到指定的文件中.无论是读写,都遇到了中文乱码问题.试过多种方法,发现下面一种可以避免中文乱码.(无论读取还是写入一定要 ...

  9. Java中文乱码破碎重组_总结彻底解决Spring MVC+Mybatis中文乱码问题

    Java对于新手最容易出现的问题就是中文乱码的问题.今天我就来总结一下彻底解决Spring mvc+Mybatis中文乱码的方案. 首先要看打一断点看一下Controller接收到参数值是否正常.如果 ...

最新文章

  1. 用Unity和C#创建在线多人游戏学习教程
  2. C++ 复数类运算符重载
  3. arcmap创建空间索引_mysql搜索引擎你会用了么
  4. 非等值连接,外连接,自连接,子查询
  5. LeetCode 1979. 找出数组的最大公约数
  6. IBM发布JumpGate 连接OpenStack和公有云
  7. oracle在指定列后添加列,oracle添加列到指定位置
  8. gawk如何在win7安装_电脑怎样安装win7系统
  9. 51Nod-1013 3的幂的和【快速模幂+逆元】
  10. 多窗口文件管理软件 Q_Dir
  11. FISCO BCOS 区块链 查看代码版本号
  12. 廖雪峰python教程杨辉三角_打印杨辉三角(廖雪峰python教程)
  13. 2021年中国新型电力系统行业市场现状、竞争格局与发展方向分析「图」
  14. android9应用icon尺寸,APP-icon尺寸
  15. R语言数据异常值处理
  16. 铂电阻测温电路c语言程序,pt100测温电路(经典测温范围)
  17. php画图取色,图片取色,涂抹代码,Python交流,技术交流区,鱼C论坛 - Powered by Discuz!...
  18. 如何做到异构数据的同步一致性
  19. WIN10下更改计算机名、中文账户名
  20. 笔试题之——栈问题(列车车厢编组问题)

热门文章

  1. aws lambda使用_使用Lambda,Api Gateway和CloudFormation在AWS云上使用Java
  2. 纪事本 乱码_纪事日记–可自定义的数据存储
  3. 高度可定制化的方案_如何开发高度可定制的产品
  4. java8 streams_当Java 8 Streams API不够用时
  5. 摆脱pom XML…几乎
  6. junit动态忽略测试_有条件忽略测试的JUnit规则
  7. java ee cdi_Java EE CDI依赖关系消歧示例
  8. 在JPA中处理Java的LocalDateTime
  9. jaxb 处理_休息使用Jersey –包含JAXB,异常处理和客户端程序的完整教程
  10. eclipse 重构_Eclipse对类固醇的重构