java在linux系统下文件夹出现中文乱码的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java在linux系统下文件夹出现中文乱码的问题相关的知识,希望对你有一定的参考价值。

参考技术A   问题描述:
  linux的默认字符编码是utf-8,在linux上存的是中文名的文件,但是用java读出来就是乱码,全是??????然后我通过:new
String(files[i].getName().getBytes("GB2312"),"UTF-8");这样处理一下,中文文件名全变成了?????,应该怎么转码才能获取中文?
  问题答案:
  Java
中的字符编码默认是Unicode
  用new
String(files[i].getName().getBytes("UTF-8"),"UTF-8");试下看对我有帮助
  用utf8格式上传,然后再用utf8格式下载就好了,但是服务器上存的是乱码的,遍历出来是中文的。

在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题

iconv命令是运行于linux/unix平台的文件编码装换工具。当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码不同而引起的,这时可以使用iconv进行编码转换,从而解决乱码问题。

解决文本文件乱码问题分3步:1.确定文件编码,2.确定iconv是否支持此编码的转换,3.确定Linux/Unix操作系统编码,4.转换文件编码为与系统编码一致;下面通过对test.txt文件来举例。

1、 使用file命令来确定文件编码:
$ file -bi gbk.txt | sed -e ‘s/.*[ ]charset=//‘ |tr ‘[a-z]‘ ‘[A-Z‘
ISO-8859-1
可见test.txt文件编码为ISO-8859-1编码。
2、 使用iconv -l确定iconv是否支持此种编码的转换:
$ iconv -l | grep ISO-8859-1
ISO-8859-1//
ISO-8859-10//
ISO-8859-11//
ISO-8859-13//
ISO-8859-14//
ISO-8859-15//
ISO-8859-16//
3、 确定Linux/Unix操作系统编码:
$ echo $LANG
zh_CN.UTF-8
当前操作系统坏境编码为"UTF-8"
4、 转换编码
$ iconv -f ISO-8859-1 -t UTF-8 test.txt
测试
注:由于file命令常常会误判编码,如发现转换出来的编码依然是乱码,可将iconv -f的输入编码换成其他常用编码试试: GBK、BIG5、HZ、GB2312、GB18030、ASCII
iconv命令的详细语法:
iconv [选项..] 文件
选项:
-f 输入编码
-t 输出编码
-l 列出所有已知的编码
-o 输出文件

以上是关于java在linux系统下文件夹出现中文乱码的问题的主要内容,如果未能解决你的问题,请参考以下文章

java读取linux下文件名乱码

Linux系统下火狐浏览器页面出现乱码怎么办?

tomcat乱码问题解决

linux与windows 互传的文件,中文名称出现乱码

我同时安装了linux和Windows操作系统,但是共享文件的时候总是出现乱码问题

Linux到windows的乱码问题:昨天将Linux下面的一个文件夹拷出来,