java编码过程中遇见的坑有哪些?相关讲解

对于java初学者来说编码问题是一个很头疼的问题,如果解决不了,还是会影响到后边的开发,那今天我们就给大家分享一些java编码过程中遇见的坑,让大家可以避开这些坑!

1. Base64编码

前后台传递消息的时候,用到了Base64编码,前端使用C#编写的Demo。开始时,后端Base64编解码时使用了sun.misc.BASE64Encoder,老是调试不出来,老是报speech param错误。然后就将接收到的数据保存到文件中,发现竟然无端多了\r\n。在网上看到有朋友说可以使用Java8自带的Base64的编解码库,编码后,'\r\n'变成了'\n'。最后还是使用土办法,String.replaceAll('\r', '').replaceAll("\n", "")解决。

2. UTF-8格式

很多人直接将所有的编码格式都统一为某一编码格式,如:UTF-8格式,这样他就谢天谢地不用去管编码的问题。但是你只要了解他就很容易了,只要你记住文字的编码以及解码只要统一那就不会出错。

public static void main(String[] args) throws Exception
{
    File file = new File("d:\\utf.txt");
    //用utf-8编码写入文件
    BufferedWriter out = new BufferedWriter(
        new OutputStreamWriter(new FileOutputStream("d:\\utf.txt"), "UTF-8"));
    out.write("汉字");
    out.close();
    //用gbk编码进行解码,会出现乱码
    System.out.println("文件大小:" + file.length() + "字节");
    BufferedReader in = new BufferedReader(
        new InputStreamReader(new FileInputStream("d:\\utf.txt"), "UTF-8"));
    String line = in .readLine();
    System.out.println(line);
    //再次用utf-8编码,得到原文
    byte[] bs = line.getBytes("gbk");
    System.out.println(new String(bs, "gbk"));
}

以上的代码进行了2次编码解码,第一次将汉字以UTF-8形式进行编码写入磁盘,然后以UTF-8形式从磁盘中读取;第二次将读取出来的数据进行gbk编码,然后再用gbk进行解码。

结果:

文件大小:4字节

汉字

汉字

我这里只对了IO进行 编码以及解码,其实对于任何情况都是一样,比如数据库中数据的存储以及读取、Http请求URL地址上含有中文等等。只要你想去了解他们,没什么能难倒你!

在工作中遇到一些问题不要怕,只要多做研究,前辈给的经验都记住,就不会有什么困难啦!最后大家如果想要了解更多java常见问题知识,敬请关注奇Q工具网。

推荐阅读:

java窗口布局有哪几种?java窗口布局介绍

ultraedit自动缩进怎么操作?ultraedit有哪些功能?

fastjson怎么开启autotype?autotype开启方式