验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

Java怎么实现UTF-8编码与解码

阅读:802 来源:乙速云 作者:代码code

Java怎么实现UTF-8编码与解码

      Java实现UTF-8编码与解码

      Java代码如下:

      import java.net.URLDecoder;
      import java.net.URLEncoder;
      
      //URLDecoder.decode("%E5%A4%A9%E6%B4%A5","UTF-8");
      public class URLDecoderTesT {
          public static void main(String[] args) throws Exception {
       
              // 将application/x-www-form-urlencoded字符串转换成普通字符串
              // 其中的字符串直接从上图所示窗口复制过来,chrome 默认用 UTF-8 字符集进行编码,所以也应该用对应的字符集解码
              System.out.println("采用UTF-8字符集进行解码:");
              String keyWord = URLDecoder.decode("%E9%99%88", "UTF-8");
              System.out.println(keyWord);
      //        System.out.println("n 采用GBK字符集进行解码:");
      //        System.out.println(URLDecoder.decode("%E5%A4%A9%E6%B4%A5%E5%A4%A7%E5%AD%A6+Rico", "GBK"));
      // 
      //        // 将普通字符串转换成application/x-www-form-urlencoded字符串
              System.out.println("n 采用utf-8字符集:");
              String urlStr = URLEncoder.encode("../../../../../../../etc/passwd", "utf-8");
              System.out.println(urlStr);
      //        System.out.println("n 采用GBK字符集:");
      //        String urlStr2 = URLEncoder.encode("天津大学", "GBK");
      //        System.out.println(urlStr2);
          }
      }

      Java怎么实现UTF-8编码与解码

      使用UTF-8或GBK编码后还是乱码的问题

      大家在开发中可能经常遇到将String字符串转为byte[]的场景,为了避免中文乱码,一般指定字符集为GBK或UTF-8来进行编码以及解码,但是如果使用不当,同样会造成字符集乱码问题。

      主要原因是进行编码以及解码的字符集不一致导致

      所以,在解决字符集乱码问题时一般情况下会显示指定编码和解码字符集。

      // 编码
      byte[] bytes = “中文”.getBytes(“UTF-8”);
      // 解码
      new String(bytes,“UTF-8”);

      不显式指定时一般会使用默认字符集进行编码或解码,此时需要确保使用的获取默认字符集的方法一样。

      // 编码 获取默认字符集方法为:Charset.defaultCharset().name()
      byte[] bytes =“中文”.getBytes();
      // 解码 获取默认字符集方法为:Charset.defaultCharset().name()
      new String(bytes);

      以下列出两种获取默认字符集的方法及区别:

      Charset.defaultCharset().name();
      System.getProperty("file.encoding")

      两者的区别是

      **Charset.defaultCharset()**通过在JVM启动时通过-Dfile.encoding=UTF-8参数来进行设置。此方式只支持在jvm启动时设置一次,不支持在运行期修改。

      System.getProperty(“file.encoding”) 获取的是操作系统的编码,可以通过System.setProperty("file.encoding","UTF-8")进行修改(此修改不会影响操作系统,重启jvm后丢失),支持在运行期修改。 

    分享到:
    *特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
    相关文章
    {{ v.title }}
    {{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
    你可能感兴趣
    推荐阅读 更多>