解决文件内容的中文乱码_字符集_字符编码_字符编码方案
从第三方下载的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
解决文件内容的中文乱码_字符集_字符编码_字符编码方案相关推荐
- java输出txt乱码_Java程序输出txt文件内容时中文乱码怎么处理?
中文乱码解决方案:代码如下,请参照public class TestStream {public static void main(String[] args) throws Exception{Da ...
- python读excel乱码_解决Python2.7读写文件中的中文乱码问题
Python2.7对于中文编码的问题处理的并不好,这几天在爬数据的时候经常会遇到中文的编码问题.但是本人对编码原理不了解,也没时间深究其中的原理.在此仅从应用的角度做一下总结, 1.设置默认编码 在P ...
- php 上传乱码_如何解决php文件上传中文乱码问题
php文件上传中文乱码的解决办法:首先打开相应的PHP文件:然后通过"iconv("UTF-8", "gbk",$name)"方法对文件名进 ...
- java读txt文件乱码_java读取txt文件时出现中文乱码怎么解决
java读取txt文件时出现中文乱码怎么解决 发布时间:2020-06-25 15:27:31 来源:亿速云 阅读:105 作者:Leah java读取txt文件时出现中文乱码怎么解决?针对这个问题, ...
- linux打开word乱码,解决linux下openoffice word文件转PDF中文乱码的问题
网上很多介绍是由于jdk中的没有字体导致乱码,而我遇到的是转换过程并未报错,但转换后的PDF中是乱码,尝试在jre/lib/fonts/中增加字体,还是不能解决问题,因此可以判断非jre字体问题,是l ...
- 解决 IntelliJ IDEA 中 .propertise 文件保存后中文乱码
解决 IntelliJ IDEA 中 .propertise 文件保存后中文乱码 运行环境: IntelliJ IDEA 2021.3 (Ultimate Edition) 在 IntelliJ ...
- sqlserver中文显示问号_解决 SecureCRT 和 SecureFX 中文乱码
引言 最近老是有小伙伴给我发消息说,下载的 SecureCRT 和 SecureFX 安装打开后连接了自己的服务器或虚拟机后会出现中文乱码,每次都要给一一回复,我倒没事,主要是有时候因为工作的原因,所 ...
- java读写html文件时出现中文乱码问题的解决方法
最近在做HTML静态生成,需要从硬盘上把模版文件的内容读出来.然后,替换相关标签写到指定的文件中.无论是读写,都遇到了中文乱码问题.试过多种方法,发现下面一种可以避免中文乱码.(无论读取还是写入一定要 ...
- Java中文乱码破碎重组_总结彻底解决Spring MVC+Mybatis中文乱码问题
Java对于新手最容易出现的问题就是中文乱码的问题.今天我就来总结一下彻底解决Spring mvc+Mybatis中文乱码的方案. 首先要看打一断点看一下Controller接收到参数值是否正常.如果 ...
最新文章
- 用Unity和C#创建在线多人游戏学习教程
- C++ 复数类运算符重载
- arcmap创建空间索引_mysql搜索引擎你会用了么
- 非等值连接,外连接,自连接,子查询
- LeetCode 1979. 找出数组的最大公约数
- IBM发布JumpGate 连接OpenStack和公有云
- oracle在指定列后添加列,oracle添加列到指定位置
- gawk如何在win7安装_电脑怎样安装win7系统
- 51Nod-1013 3的幂的和【快速模幂+逆元】
- 多窗口文件管理软件 Q_Dir
- FISCO BCOS 区块链 查看代码版本号
- 廖雪峰python教程杨辉三角_打印杨辉三角(廖雪峰python教程)
- 2021年中国新型电力系统行业市场现状、竞争格局与发展方向分析「图」
- android9应用icon尺寸,APP-icon尺寸
- R语言数据异常值处理
- 铂电阻测温电路c语言程序,pt100测温电路(经典测温范围)
- php画图取色,图片取色,涂抹代码,Python交流,技术交流区,鱼C论坛 - Powered by Discuz!...
- 如何做到异构数据的同步一致性
- WIN10下更改计算机名、中文账户名
- 笔试题之——栈问题(列车车厢编组问题)
热门文章
- aws lambda使用_使用Lambda,Api Gateway和CloudFormation在AWS云上使用Java
- 纪事本 乱码_纪事日记–可自定义的数据存储
- 高度可定制化的方案_如何开发高度可定制的产品
- java8 streams_当Java 8 Streams API不够用时
- 摆脱pom XML…几乎
- junit动态忽略测试_有条件忽略测试的JUnit规则
- java ee cdi_Java EE CDI依赖关系消歧示例
- 在JPA中处理Java的LocalDateTime
- jaxb 处理_休息使用Jersey –包含JAXB,异常处理和客户端程序的完整教程
- eclipse 重构_Eclipse对类固醇的重构