linux乱码,文件名乱码、文件内容乱码,JDK编码。 CKFinder文件名称乱码 (使用UTF-8解决)

我遇到一个问题,CKFinder后台获取到的文件名是问号。

肯定是编码问题。

 

第一步,修改jdk编码

(目标读取到正确的文件名称。验证方法输出文件名到日志文件,下载日志到本地确定不乱码)

 

解决方法tomcat bin目录下新增:

setenv.sh

export JAVA_OPTS="-server -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8"

 

默认情况下,得到系统编码(Ubuntu  openjdk):

 

# java -jar sysProp.jar  | grep encoding                                        
file.encoding.pkg: sun.io
sun.jnu.encoding: ANSI_X3.4-1968
file.encoding: ANSI_X3.4-1968
sun.io.unicode.encoding: UnicodeLittle
  

加上虚拟机参数后:

# java -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8 -jar sysProp.jar  | grep encoding
file.encoding.pkg: sun.io
sun.jnu.encoding: UTF-8
file.encoding: UTF-8 
sun.io.unicode.encoding: UnicodeLittle

  

编码解释:

  1. sun.jnu.encoding   影响文件名
  2. file.encoding  影响文件内容

 附录sysProp.jar 的代码:

package pp.Main;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.Properties;

public class Main {
	public static void main(String[] args) throws IOException {
		Properties p = System.getProperties();
		Iterator<Object> keys = p.keySet().iterator();
		while(keys.hasNext()){
			String key=keys.next().toString();
			System.out.println(key+": "+System.getProperty(key));
		}
		String name="newfile_新文件";
		System.out.println(name);
		File f=new File(name);
		if(f.exists()){
			f.delete();
		}
		f.createNewFile();
	}
}

 

设置好后,CKFinder得到的文件名在日志里显示正常,设置之前是问号。但是文件名称还是问号。

 

第二步,修改操作系统的编码。

(目标sysProp.jar新建的文件名能够正确显示 )

 

设置字符编码   vi /etc/environment  添加下面两行

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh:en_US:en"
关键的一步:使用locale-gen命令添加中文字符编码(命令执行后需要耐心等待几分钟)。
 #locale-gen zh_CN.UTF-8
  执行成功后,重启 执行java -Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8 -jar sysProp.jar 然后ls 将正确看到中文显示。
....
sun.cpu.isalist:
newfile_新文件
root@ippcom:~# ls
index.html  newfile_新文件  sysProp.jar

 

 

 注意一定要用支持UTF-8的ssh客户端,例如putty

 

参考

http://kang36897.blog.163.com/blog/static/17047373201331111224630/

http://blog.csdn.net/cuker919/article/details/8233821

 

http://www.linuxidc.com/Linux/2014-02/96939.htm

猜你喜欢

转载自bnmnba.iteye.com/blog/2384582
今日推荐