java读取linux下文件名乱码

Posted

tags:

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

我将windows的文件拷贝到linux下,部署在linux下的java读取文件时,文件名中文乱码。各位大虾们,帮帮忙,在线等。
恩,是的,字符编码不一样,我将文件名从UTF-8转换成GBK,linux认了,如果用windows访问的话,又是乱码了,有没有两个系统都通用的编码吗? O(∩_∩)O哈哈哈~,我终于转成功啦!把方法贴出来给大家分享吧。

在Linux中专门提供了一种工具convmv进行文件名编码的转换,可以将文件名从GBK转换成UTF-8编码,或者从UTF-8转换到GBK。
首先看系统上是否安装了convmv,如果没安装:
yum -y install convmv安装。
下面看convmv的用法:
convmv -f 源编码 -t 新编码 [选项] 文件名常用参数:
-r 递归处理子文件夹
--notest 真正进行操作,请注意在默认情况下是不对文件进行真实操作的,而只是试验。
--list 显示所有支持的编码
--unescap 可以做一下转义,比如把%20变成空格比如我们有一个utf8编码的文件名,转换成GBK编码,命令如下:
convmv -f UTF-8 -t GBK --notest utf8编码的文件名这样转换以后"utf8编码的文件名"会被转换成GBK编码(只是文件名编码的转换,文件内容不会发生变化)。

不过还是谢谢各位!这是我第一次在百度知道里提问呢。

Linux下读取文件名乱码可能的原因是:
1.linux系统默认编码不支持中文字符

2.文件名本身是乱码

解决方案是在读取文件名的时候,要进行显式的编码转换如下:

FileInputStream fis = new FileInputStream("fileName");
InputStreamReader isr = new InputStreamReader(fis,"utf-8");
参考技术A 把你代码放上来看看··
这个是编码的问题··不知道你是在做什么操作的时候出现的乱码··
一般程序执行如果不指定编码会用系统默认编码执行··
可能是你原来的程序内在windows下运行指定了GBK或者其他编码··那么移植后要改为UTF-8··
参考技术B linux挂载分区时要使用合适的字符编码。否则在应用程序层面总是无法正常显示
你可以看看
>man
mount
然后搜索charset
参考技术C 字符编码不统一,linux的默认编码是UTF8,windows是GBK 参考技术D Linux 统一 UTF-8 ,如果你的应用环境不是 UTF-8 需要自己转换。
Windows 的输入输出系统自动提供转换功能。

这就是区别……本回答被提问者和网友采纳

linux下使用opencsv.jar 读取CSV文件出现中文乱码

哪位大虾知道如何解决。opencsv-2.3.jar
DataInputStream in = new DataInputStream(new FileInputStream(importFile));
csvReader = new CSVReader(new InputStreamReader(in,"GBK"),',');

参考技术A 出现乱码,原因多为字符集不匹配,修改字符集吧。追问

知道是字符集的问题 可是不知道怎么在程序里修改啊

以上是关于java读取linux下文件名乱码的主要内容,如果未能解决你的问题,请参考以下文章

Java读取linux系统中文文件名时候乱码,并显示文件不存在

linux下使用opencsv.jar 读取CSV文件出现中文乱码

java写的excel文件转csv文件脚本遇到中文就会乱码

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

JAVA生成文件在linux下文件名乱码

通过java控制linux环境下解压文件夹后中文文件名是乱码