开发者

Java实现UTF-8编码与解码方式

目录
  • Java实现UTF-8编码与解码
  • 使用UTF-8或GBK编码后还是乱开发者_Go教程码的问题
    • 两者的区别是
  • 总结

    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字符串转换成普通字符串
        // 其中的字符串直接从上图所示窗口复制过来,chjsrome 默认用 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(URLDechttp://www.devze.comoder.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("天津大学js", "GBK");
    //    System.out.println(urlStr2);
      }
    }

    推荐一个好的在线转换网页:https://www.bejson.com/enc/urlencode/

    Java实现UTF-8编码与解码方式

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

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

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

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

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

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

    // 编码 获取默认字符集方法为: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后丢失),支持在运行期修改。 

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜