首页 新闻 搜索 专区 学院

windows下和linux下文件名转码问题

0
悬赏园豆:60 [待解决问题]

问题是这样的:windows下用C#程序生成一个文件,然后将该文件放到linux下供另外一个程序使用。首先在indows下生成一个正常的文件,由于编码问题,在linux下文件名显示乱码,为了解决这个问题,采用以下方法对文件名转换了下:

byte[] cutf8Bytes = Encoding.UTF8.GetBytes(filename); //获取源文件名的字节数组

filename = Encoding.Default.GetString(cutf8Bytes); //新的文件名

采用这种方法后,在linux下文件名显示正常,windows下显示为乱码,这个是可以接受的。但新的问题来了:在windows下有的文件名乱码中包含“?”问号,而在windows中,路径和文件名是不能包含"?"这种特殊字符的,这个问题该怎么解决?

问题补充:

看到一个别人写的工具,导出的文件是压缩包的形式,在压缩包里面中文文件名也是乱码,也包含问号,但是解压缩出来问号就变成下划线了,有人知道这个是怎么实现的吗?

王仙客的主页 王仙客 | 初学一级 | 园豆:12
提问于:2013-11-25 11:10
< >
分享
所有回答(3)
1

是不是文件名里有中文,最好不用中文,只用英文单词

会长 | 园豆:10920 (专家六级) | 2013-11-25 11:17

是的,文件名里面是有中文,但是有可以用中文的要求,所以中文必须得考虑,有解决这个问题的好的方法吗?

支持(0) 反对(0) 王仙客 | 园豆:12 (初学一级) | 2013-11-25 11:20

@油头教授: Linux系统里的中文编码方式可以设置不?如果可以,设置成一致的最好。否则windows到linux要转一遍,linux到windows又要转回去

支持(0) 反对(0) 会长 | 园豆:10920 (专家六级) | 2013-11-25 11:33

@会长: linux下的东西都不让动的。只是用windows下生成的文件放到linux下用

支持(0) 反对(0) 王仙客 | 园豆:12 (初学一级) | 2013-11-25 11:42
0

1.文件后缀名使用英文命名,是不会乱码的。

2.文件内容使用utf8编码,在linux下也不乱码的。

以上通过xftp4,将文件在windows下传输到linux中!

秋壶冰月 | 园豆:5692 (大侠五级) | 2013-11-25 11:31

文件内容倒是没什么问题,就是文件名要求可以使用中文。

支持(0) 反对(0) 王仙客 | 园豆:12 (初学一级) | 2013-11-25 11:40

@油头教授: 1.修改linux的默认编码,和windows一致,文件名就不会乱码了

支持(0) 反对(0) 秋壶冰月 | 园豆:5692 (大侠五级) | 2013-11-25 12:12
0

这种情况下建议在linux下修改一下默认编码格式,和windows的一致,这样应该不会出现乱码了吧?或者是路径的问题,试试把文件换个简单明了的路径

妍珊 | 园豆:1169 (小虾三级) | 2013-11-25 13:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册