`
bnmnba
  • 浏览: 293582 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    java-jdk1.8-8u361-all-jdk-win-linux

    jdk-8u361-linux-aarch64.rpm jdk-8u361-linux-i586.rpm jdk-8u361-linux-i586.tar.gz jdk-8u361-linux-x64.rpm jdk-8u361-linux-x64.tar.gz jdk-8u361-windows-i586.exe jdk-8u361-windows-x64.exe 如果需要mac版本...

    jdk-11.0.19-linux-x64-bin.tar.gz文件(分享给需要的同学)

    jdk-11.0.19_linux-x64_bin.tar.gz文件 jdk-11.0.19_linux-x64_bin.tar.gz文件 jdk-11.0.19_linux-x64_bin.tar.gz文件 jdk-11.0.19_linux-x64_bin.tar.gz文件 jdk-11.0.19_linux-x64_bin.tar.gz文件 jdk-11.0.19_...

    jdk-8u261-linux-x64.tar linux jdk

    下载解压即可 jdk-8u261-linux-x64.tarjdk-8u261-linux-x64.tarjdk-8u261-linux-x64.tar" 表明这是Java开发工具包的一个更新版本,特别是JDK 8 Update 261(8u261),并且提供的是一个可下载和解压缩的文件,用于在...

    jdk-8u301-linux.zip

    (1)jdk-8u301-linux-aarch64.rpm (2)jdk-8u301-linux-aarch64.tar.gz (3)jdk-8u301-linux-arm32-vfp-hflt.tar.gz (4)jdk-8u301-linux-i586.rpm (5)jdk-8u301-linux-i586.tar.gz (6)jdk-8u301-linux-x64....

    jdk-8u171-linux-x64.rpm/jdk-8u171-linux-x64.tar.gz

    首先,`jdk-8u171-linux-x64.rpm`是一个RPM(Red Hat Package Manager)格式的文件,主要用于基于RPM包管理系统的Linux发行版,如Fedora、CentOS或Red Hat Enterprise Linux。RPM包提供了方便的安装、升级和卸载功能...

    jdk-6u45-linux-x64.zip_jdk-1.6u45_jdk-6u45_jdk-6u45-linux-x64_jd

    这个压缩包文件"jdk-6u45-linux-x64.zip"包含的是JDK 1.6.0_45(也被称为6u45或1.6u45)的64位Linux版本。JDK 1.6是Java平台标准版的一个重要版本,它提供了许多功能和性能改进,是许多企业级应用的基础。 JDK 1.6u...

    JDK1.8安装包文件 jdk-8u231-linux-x64.tar.gz

    Centos7离线安装文件 jdk-8u231-linux-x64.tar.gz压缩包 免费下载,现在博客都是付费文件,搞得头大,现在免费分享

    jdk-8u162-linux-x64.tar.zip

    压缩包子文件的文件名称列表中仅有一个条目:“jdk-8u162-linux-x64.tar.gz”。这里的".gz"是gzip的缩写,是一种常见的数据压缩格式,用于减少文件大小,方便在网络上传输。这个文件是".tar"文件经过gzip压缩后的...

    java-jdk1.8-jdk-8u151-linux-x64.zip

    1. **下载**:首先,你需要从Oracle官方网站或可信的第三方源下载`java-jdk1.8-jdk-8u151-linux-x64.zip`压缩文件。确保文件的完整性和安全性,可以通过检查MD5或SHA校验和来验证。 2. **解压**:使用`unzip`命令将...

    jdk-8u181-linux-x64.tar.gz

    描述中提到的"解压后有个jdk-8u181-linux-x64.tar.gz 后直接在Linux中使用 jdk-8u181-linux-x64.tar",这意味着用户需要首先使用Linux的解压缩工具(如tar命令)来解压这个文件。解压后,会得到一个名为“jdk-8u181-...

    jdk-8u202-linux-arm64-vfp-hflt-demos.tar.gz

    标题中的"jdk-8u202-linux-arm64-vfp-hflt-demos.tar.gz"表明这是一个针对Linux ARM架构(具体为vfp-hflt变体)的Java Development Kit(JDK)版本8更新202的示例(demos)压缩包。这个压缩文件采用tar.gz格式,是...

    java-jdk1.8-jdk-8u202-linux-x64.zip

    2. **解压**:使用`unzip`命令解压下载的zip文件,得到`jdk-8u202-linux-x64.tar.gz`。然后使用`tar -zxvf jdk-8u202-linux-x64.tar.gz`将其解压到目标目录。 3. **配置环境变量**:为了能在系统中全局使用JDK,...

    jdk-8u144-linux-x64.zip

    标题中的"jdk-8u144-linux-x64.zip"指的是Java Development Kit(JDK)的8u144版本,专为Linux操作系统x64架构设计的压缩包文件。JDK是Java编程语言的核心组件,包含了Java编译器、Java运行环境、Java类库以及开发者...

    jdk-8-linux-x64.rar

    标题“jdk-8-linux-x64.rar”指出这是一个针对64位Linux系统的Java Development Kit (JDK) 的压缩包,版本为1.8。RPM(Red Hat Package Manager)是这个软件包的格式,通常用于Fedora、CentOS、RHEL等基于Linux的...

    jdk8-jdk-8u121-linux-x64.tar.gz

    2. **解压**:使用`tar -zxvf jdk8-jdk-8u121-linux-x64.tar.gz`命令解压文件,这将创建一个名为`jdk1.8.0_121`的目录。 3. **配置环境变量**:编辑`~/.bashrc`或`~/.bash_profile`文件,添加以下内容: ```bash ...

    jdk-8u341-linux-x64安装包

    用户需要先解压(使用`tar -zxvf jdk-8u341-linux-x64.tar.gz`),然后手动配置环境变量如`JAVA_HOME`,将JDK添加到`PATH`,以便系统能够找到Java可执行文件。 3. **JDK 8u341 版本详解**: - **版本号**:`8u341`...

    jdk-8u151-linux-x64.rpm

    Linux环境下的Tomcat所依赖的jdk8的环境rpm版 Linux环境下的Tomcat所依赖的jdk8的环境rpm版 Linux环境下的Tomcat所依赖的jdk8的环境rpm版 Linux环境下的Tomcat所依赖的jdk8的环境rpm版 Linux环境下的Tomcat所依赖的...

    java-jdk1.8-jdk-8u192-linux-x64.zip

    2. 解压后,你会得到一个名为`jdk-8u192-linux-x64.tar.gz`的文件,使用`tar -zxvf jdk-8u192-linux-x64.tar.gz`命令将其解压到指定目录。 3. 接着,需要将JDK的安装路径添加到系统的`PATH`和`JAVA_HOME`环境变量中...

    最新版linux jdk-8u371-linux-x64.tar.zip

    最新版linux jdk-8u371-linux-x64.tar.zip最新版linux jdk-8u371-linux-x64.tar.zip最新版linux jdk-8u371-linux-x64.tar.zip

Global site tag (gtag.js) - Google Analytics