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

从第三方下载的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335029.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rust为什么显示不了国服_捋捋 Rust 中的 impl Trait 和 dyn Trait

缘起一切都要从年末换工作碰上特殊时期, 在家闲着无聊又读了几首诗, 突然想写一个可以浏览和背诵诗词的 TUI 程序说起. 我选择了 Cursive 这个 Rust TUI 库. 在实现时有这么一个函数, 它会根据参数的不同返回某个组件(如 Button, TextView 等). 在 Cursive 中, 每个组件都实现了…

mysql不支持子查询_MySQL不支持子查询优化一例

一创建表 create table tt1(id int primary key, c1 INT);create table tt2(id int primary key, c2 INT);insert into tt1 value一创建表create table tt1(id int primary key, c1 INT);create table tt2(id int primary key, c2 INT);insert into tt1 values(1,1),(2,2),(3,3…

Mysql索引使用情况_介绍mysql索引失效的情况

mysql视频教程栏目索引失效的情况。索引对于MySQL而言&#xff0c;是非常重要的篇章。索引知识点也巨多&#xff0c;要想掌握透彻&#xff0c;需要逐个知识点一一击破&#xff0c;今天来先来聊聊哪些情况下会导致索引失效。图片总结版相关免费学习推荐&#xff1a;mysql视频教程…

java 类 null_深入理解java中的null“类型”

本文研究的主要是java中的null“类型”的相关实例&#xff0c;具体介绍如下。先给出一道简单的null相关的题目&#xff0c;引发我们对null的探讨,后面会根据官方语言手册对null“类型”进行解读。题目&#xff1a;下面程序能正确运行吗&#xff1f;解析&#xff1a;输出应该为 …

如何彻底禁用Chrome浏览器的缓存功能

禁止Chrome浏览器的缓存功能有几种方式&#xff1a; 使用Shift F5强制刷新缓存。实际使用中我们发现&#xff0c;这种方法对于部分网页的更改并不能做到释放缓存的作用&#xff0c;尤其是无法释放DNS缓存。 使用隐身模式Shift Control N. 这种方法只能在打开的页面上消除之…

java int integer内存_java中一个integer对象的内存占用是多少?可以通过java方法输出吗?...

今天翻记录看到了自己15年3月份提的问题&#xff0c;现在已经18年6月份了&#xff1b;去年线上项目出现内存瓶颈&#xff0c;原因是缓存的玩家角色数据过多&#xff0c;在长时间不停服的情况下&#xff0c;导致数据越来越膨胀&#xff0c;之前没有清除无用缓存的机制&#xff0…

windows查看器无法打开图片_关于windows微软商城无法打开 错误代码0x80004003问题...

我本来是商城可以进 但是一打开里面的东西就无法打开 按下面的刷新就闪退 如下图操作桌面winr 运行 services.msc然后找到windows update打开就行 但是开启了系统会自动更新若是修改时显示拒绝访问桌面winr 输入regedit打开注册表 注册表找到HKEY_LOCAL_MACHINESYSTEMCurrentCo…

win10 java 反编译_win10下对.java源文件进行编译和反编译的步骤

1、先写好代码&#xff0c;如下找了个示例代码&#xff0c;文件名是Mutex.java&#xff1a;package com.huangshiyi.concurrent.cha04;import java.util.concurrent.TimeUnit;public class Mutex {private final static Object MUTEX new Object();public void accessResource…

电容屏物体识别_相比传统的触摸屏,电容式触摸屏的优势

点击蓝字&#xff0c;轻松关注今日话题 如今&#xff0c;我们的身边有着许多电子产品&#xff0c;主要是因为它便于我们的生活&#xff0c;所以我们的身边出现了许多触摸屏。对于电子产品&#xff0c;我们使用之前要了解清楚它的使用性能&#xff0c;掌握多点信息&#xff0c;这…

java底层机制_Java同步机制的底层实现

在多线程编程中我们会遇到很多需要使用线程同步机制去解决的并发问题&#xff0c;而这些同步机制就是多线程编程中影响正确性和运行效率的重中之重。这不禁让我感到好奇&#xff0c;这些同步机制是如何实现的呢&#xff1f;好奇心是进步的源泉&#xff0c;就让我们一起来揭开同…

payara 创建 集群_高可用性(HA),会话复制,多VM Payara群集

payara 创建 集群抽象 在研究如何创建高可用性&#xff08;HA&#xff09;时&#xff0c;我发现了会话复制&#xff0c;多机处理的Payara / GlassFish群集&#xff0c;无法在单个参考中找到所需的一切。 我认为这将是一个普遍的需求并且很容易找到。 不幸的是&#xff0c;我的假…

积分和人民币比率_通过比率路由到旧版和现代应用程序–通过Spring Cloud的Netflix Zuul...

积分和人民币比率从应用程序的旧版本迁移到应用程序的现代化版本时&#xff0c;一个非常常见的要求是能够将用户缓慢迁移到新应用程序。 在本文中&#xff0c;我将介绍通过Spring Cloud使用对Netflix Zuul的支持编写的这种路由层。 在继续之前&#xff0c;我必须承认&#xff0…

Java集合类原理详解

文章目录1 集合框架1.1 集合框架概述1.1.1 容器简介1.1.1 容器的分类1.2 Collection1.2.1 常用方法1.2.2 迭代器1.3 List1.3.1 概述1.3.2 常用方法1.3.3 实现原理1.4 Map1.4.1 概述1.4.2 常用方法1.4.3 Comparable 接口1.4.4 实现原理1.4.5 覆写 hashCode()1.5 Set1.5.1 概述1.…

sql安装联机丛书提示发生网络错误_速达软件:安装问题解答

问题Q&A在安装MSDE数据库时&#xff0c;出现安装程序倒退的情况解决方案&#xff1a;这是以前装过SQL Server数据库或MSDE数据库,没有卸载干净.解决办法重装操作系统。安装MSDE数据库时&#xff0c;系统出现“读取文件C:\program files\Microsoft sql sever\mssql\data\msd…

java分布式系统开发_从微服务到分布式系统-Java开发人员生存指南

java分布式系统开发感觉像是对微服务的炒作正在慢慢地落到实处&#xff0c;并且我们的行业开始意识到&#xff0c;根据微服务背后的体系结构范式无法通过仅在现有组件之上公开一些HTTP接口来轻松创建一个系统。 。 我们似乎确实同意必须进行服务优化的基础架构&#xff0c;文化…

链表数据结构原理图/内存结构图/内存图

单项链表内存结构图&#xff08;也叫原理图&#xff09; 单项链表内存结构图

反射与泛型 java_Java的反射 和 泛型的一个问题

aluckdog模板方法在编译过程中类型擦除&#xff1a;update(T,UpdateOperations)退化成update(Object,UpdateOperations)&#xff1b;update(Query,UpdateOperations)退化成update(Query,UpdateOperations)&#xff1b;morphia的update方法不光是一个模板方法&#xff0c;还是一…

迭代器原理图

原理图&#xff1a; Iterator<String> it Collection.iterator();it 是集合Collection的视图&#xff0c;迭代器其实就是视图&#xff08;类似数据库的 view&#xff09;&#xff0c;可以理解为一张单列多行的表&#xff0c;如下图所示&#xff1a; 有人理解成单行多…

neo4j python 算法_图论与图学习(二):图算法

选自towardsdatascience作者&#xff1a;Mal Fabien机器之心编译参与&#xff1a;熊猫图(graph)近来正逐渐变成机器学习的一大核心领域&#xff0c;比如你可以通过预测潜在的连接来理解社交网络的结构、检测欺诈、理解汽车租赁服务的消费者行为或进行实时推荐。近日&#xff0c…

cobol和java_现代化历险:策略+将COBOL转换为Java的示例

cobol和java在Keyhole Software&#xff0c;我们在很大程度上是一家现代化公司。 我们有一些顾问&#xff0c;专门研究将旧的代码迁移到新的&#xff0c;翻新的残旧代码库&#xff0c;并为大多数已经被供应商锁定的企业设计更光明的未来。 作为这些经验的一个有趣的副作用&…