Windows与Linux下Base64编码问题
2015-10-16 15:48
1421 查看
Java中,String有很多个构造方法,其中有三个如下图所示:
人们习惯性喜欢使用没有字符集的构造方法,因为简单!而我也正是犯了同样的错误!
先贴出代码:
这段代码在本地windows环境下运行正常,结果如图:
但是部署到linux环境后,出现结果却很奇怪:
这说明第一次new String()的时候,字符集就出现了问题,导致base64解码失败,进一步编码也就和初始编码字符串不一致了!
于是查看两个系统的编码集结果如下
Windows:
936代表的编码格式就是GBK
Linux:
linux的系统编码为UTF-8
问题查出来就好解决了!
对代码进一步优化,减少对系统编码的依赖:
问题完美解决 !
人们习惯性喜欢使用没有字符集的构造方法,因为简单!而我也正是犯了同样的错误!
先贴出代码:
System.out.println("````````````````````````````````````" + new String(userQues.getBytes("GBK"))); System.out.println("````````````````````````````````````" + new String(Base64.decodeBase64(userQues.getBytes("GBK")))); System.out.println("````````````````````````````````````" + Base64.encodeBase64String(new String(Base64.decodeBase64(userQues.getBytes("GBK"))).getBytes("GBK")));
这段代码在本地windows环境下运行正常,结果如图:
但是部署到linux环境后,出现结果却很奇怪:
这说明第一次new String()的时候,字符集就出现了问题,导致base64解码失败,进一步编码也就和初始编码字符串不一致了!
于是查看两个系统的编码集结果如下
Windows:
936代表的编码格式就是GBK
Linux:
linux的系统编码为UTF-8
问题查出来就好解决了!
对代码进一步优化,减少对系统编码的依赖:
System.out.println("````````````````````````````````````" + new String(userQues.getBytes("GBK"))); System.out.println("````````````````````````````````````" + new String(Base64.decodeBase64(userQues.getBytes("GBK")), "GBK")); System.out.println("````````````````````````````````````" + Base64.encodeBase64String(new String(Base64.decodeBase64(userQues.getBytes("GBK")), "GBK").getBytes("GBK")));
问题完美解决 !
相关文章推荐
- Linux 的cp命令
- Linux内核开发-修改开机Logo
- Linux定时任务执行,删除某个时间段的文件
- 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情7. 安装 PHP PHP 是用于 web 基础服务的服务器端脚本语言。它也经常被用作通用编程语言。在最小化安装的 CentOS 中安
- linux GRE的加载与配置实例
- Linux之开源软件及其相关组织
- centos yum安装配置SVN subversion 并同步web目录
- linux bluetooth
- centos6.5安装thrift
- CentOS6.4配置Hadoop-2.6.0集群配置安装指南
- linux上得内存映射
- android sdk linux 文本 64 位置
- linux下单引号和双引号区别
- Linux学习 -- 备份与恢复
- Linux图像处理高手―GIMP与ImageMagicK
- Linux信号、信号处理和信号处理函数
- linux fdisk命令使用
- Linux下安装jdk过程
- Linux下如何挂载FAT32格式USB设备
- linux awk命令详解