对于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工具网。
推荐阅读: