您当前的位置: 首页 > 

liaowenxiong

暂无认证

  • 1浏览

    0关注

    1171博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

liaowenxiong 发布时间:2021-02-05 10:24:27 ,浏览量:1

从第三方下载的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 users =
                  new HashMap();
  
  /**
   * key:¿¼ÌâµÄÄÑÒ×¶È(level)
   * value:¶ÔÓ¦ÄѶȵÄÒ»×鿼ÌâList
   */

有经验的程序员就是靠猜测,认为这很有可能是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 users =\n" +
            "                  new HashMap();\n" +
            "  \n" +
            "  /**\n" +
            "   * key:¿¼ÌâµÄÄÑÒ×¶È(level)\n" +
            "   * value:¶ÔÓ¦ÄѶȵÄÒ»×鿼ÌâList\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             
关注
打赏
1661566967
查看更多评论
0.0455s