sun.jnu.encoding 影响文件名的创建,而 file.encoding 则影响到文件内容。
所以说,在我们使用 Java 处理中文文件的时候,如果发现文件的中文内容没有乱码,而文件的中文名发生乱码,我们就应当多考虑一下 sun.jnu.encoding 和 file.encoding 的区别了。
支持中文文件目录的 org.apache.tools.zip.* 打包解压缩中文文件夹都没有问题的。但有的时候打包后的中文文件名会出现乱码,这是为什么呢?查看 org.apache.tools.zip.ZipOutputStream 的 API 会发现关于其 getEncoding() 方法的说明:“The encoding to use for filenames and the file comment.”,将以下语句执行一下:

org.apache.tools.zip.ZipOutputStream out = new org.apache.tools.zip.ZipOutputStream(new java.io.FileOutputStream(“D:/temp/testfile.zip”));
System.out.println(“out.getEncoding()=” + out.getEncoding());

执行结果如下:

out.getEncoding()=null

问题就在这里了。在 org.apache.tools.zip.ZipOutputStream 创建好以后,手工设置一下:

out.setEncoding(System.getProperty(“sun.jnu.encoding”));

发现打包后中文名可以正常显示了。
参考一:http://stackoverflow.com/questions/1066845/what-exactly-is-sun-jnu-encoding【stackoverflow 关于 sun.jnu.encoding 的解答】,
参考二:http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/api/org/apache/tools/zip/ZipOutputStream.html【ZipOutputStream 的 API】,
参考三:http://massapi.com/source/apache-ant-1.8.2/src/main/org/apache/tools/zip/ZipOutputStream.java.html【ZipOutputStream 的源代码】。
来源:http://blog.csdn.net/defonds/article/details/7044750

评论关闭
发表于: DB/ES | 作者: | 日期: 2017/6/22 10:06

上一篇《58到家数据库30条军规解读》引发了广泛的讨论,某些军规部分同学有疑惑,补充一文说明。
 
军规:必须使用UTF8字符集
和DBA负责人确认后,纠正为“新库默认使用utf8mb4字符集”。
这点感谢网友的提醒,utf8mb4是utf8的超集,emoji表情以及部分不常见汉字在utf8下会表现为乱码,故需要升级至utf8mb4。
默认使用这个字符集的原因是:“标准,万国码,无需转码,无乱码风险”,并不“节省空间”。
一个潜在坑:阿里云上RDS服务如果要从utf8升级为utf8mb4,需要重启实例,所以58到家并没有把所有的数据库升级成这个字符集,而是“新库默认使用utf8mb4字符集”。
More …

评论关闭
发表于: DB/ES | 作者: | 日期: 2017/6/22 10:06

主题 数据库
军规适用场景 : 并发量大、数据量大的互联网业务
军规 :介绍内容
解读 :讲解原因 , 解读比军规更重要
一、基础规范
( 1 ) 必须使用 InnoDB 存储引擎
解读:支持事务、行级锁、并发性能更好、 CPU 及内存缓存页优化使得资源利用率更高
( 2 )必须使用 UTF8 字符集
解读:万国码,无需转码,无乱码风险,节省空间
More …

评论关闭
发表于: java/j2ee | 作者: | 日期: 2017/6/21 08:06
标签:

首先来看看JVM参数的设置形式:

-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M

这里有几个问题:
1. 各个参数的含义什么?
2. 为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动?
3. 为何将上面的参数写入到eclipse.ini文件Eclipse没有执行对应的设置?
More …

评论关闭
发表于: lnmp | 作者: | 日期: 2017/6/08 09:06
标签:

linux是一个很能自动产生文件的系统,日志、邮件、备份等。虽然现在硬盘廉价,我们可以有很多硬盘空间供这些文件浪费,让系统定时清理一些不需要的文件很有一种爽快的事情。不用你去每天惦记着是否需要清理日志,不用每天收到硬盘空间不足的报警短信,想好好休息的话,让我们把这个事情交给机器定时去执行吧。
More …

评论关闭
发表于: mac/iphone/ipad/android | 作者: | 日期: 2017/6/06 02:06
标签:

查看所有的变量:

$ printenv
PATH=/Library/Frameworks/Python.framework/Versions/3.4/bin:/Users/calios/.cabal/bin:/Applications/ghc-7.8.4.app/Contents/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/Users/calios/.cabal/bin:/Applications/ghc-7.8.4.app/Contents/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/Users/calios/.cabal/bin:/Applications/ghc-7.8.4.app/Contents/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
ZSH=/Users/calios/.oh-my-zsh

More …

评论关闭
发表于: lnmp | 作者: | 日期: 2017/6/06 02:06
标签: ,,

我们都知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务。而不能让程序在前台后台之间切换。而 Linux 提供了 fg 和 bg 命令,让我们轻松调度正在运行的任务。
假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctrl-Z ,挂起这个程序,然后可以看到系统提示(方括号中的是作业号):
代码如下:

[1]+ Stopped /root/bin/rsync.sh

More …

评论关闭
发表于: DB/ES | 作者: | 日期: 2017/6/02 01:06

MySql数字函数大全
abs(N)
返回N的绝对值 
mysql> select ABS(2);
-> 2
mysql> select ABS(-32);
-> 32
floor(N)
返回不大于N的最大整数值 
mysql> select FLOOR(1.23);
-> 1
mysql> select FLOOR(-1.23);
-> -2
More …

评论关闭
发表于: DB/ES | 作者: | 日期: 2017/6/01 03:06
标签:

总结一下mysql的时间格式化函数。
DATE_FORMAT(date,format)
根据format字符串格式化date值。下列修饰符可以被用在format字符串中:
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%M 月名字(January……December)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%W 星期名字(Sunday……Saturday)
%a 缩写的星期名字(Sun……Sat)
More …

评论关闭
发表于: DB/ES | 作者: | 日期: 2017/6/01 02:06
标签:

MySQL支持的三个浮点类型是 FLOAT、DOUBLE 和 DECIMAL 类型。FLOAT 数值类型用于表示单精度浮点数值,而 DOUBLE 数值类型用于表示双精度浮点数值。
与整数类型一样,这些类型也带有附加参数:一个显示宽度指示器和一个小数点指示器。例如,语句FLOAT (5,2)规定显示的值不会超过5位数字,小数点后面带有2位数字。看下面的示范举例:
mysql> insert into data values (876.90);
Query OK, 1 row affected (0.03 sec)
mysql> insert into data values (-5.2);
Query OK, 1 row affected (0.03 sec)
mysql> insert into data values (-12345.789);
ERROR 1264 (22003): Out of range value for column ‘price’ at row 1
mysql> insert into data values (-1234.789);
ERROR 1264 (22003): Out of range value for column ‘price’ at row 1
More …

评论关闭