问题是这样的:windows下用C#程序生成一个文件,然后将该文件放到linux下供另外一个程序使用。首先在indows下生成一个正常的文件,由于编码问题,在linux下文件名会显示乱码,为了解决这个问题,采用以下方法对文件名转换了下:
byte[] cutf8Bytes = Encoding.UTF8.GetBytes(filename); //获取源文件名的字节数组
filename = Encoding.Default.GetString(cutf8Bytes); //新的文件名
采用这种方法后,在linux下文件名显示正常,windows下显示为乱码,这个是可以接受的。但新的问题来了:在windows下有的文件名乱码中包含“?”问号,而在windows中,路径和文件名是不能包含"?"这种特殊字符的,这个问题该怎么解决?
看到一个别人写的工具,导出的文件是压缩包的形式,在压缩包里面中文文件名也是乱码,也包含问号,但是解压缩出来问号就变成下划线了,有人知道这个是怎么实现的吗?
是不是文件名里有中文,最好不用中文,只用英文单词
是的,文件名里面是有中文,但是有可以用中文的要求,所以中文必须得考虑,有解决这个问题的好的方法吗?
@油头教授: Linux系统里的中文编码方式可以设置不?如果可以,设置成一致的最好。否则windows到linux要转一遍,linux到windows又要转回去
@会长: linux下的东西都不让动的。只是用windows下生成的文件放到linux下用
1.文件后缀名使用英文命名,是不会乱码的。
2.文件内容使用utf8编码,在linux下也不乱码的。
以上通过xftp4,将文件在windows下传输到linux中!
文件内容倒是没什么问题,就是文件名要求可以使用中文。
@油头教授: 1.修改linux的默认编码,和windows一致,文件名就不会乱码了
这种情况下建议在linux下修改一下默认编码格式,和windows的一致,这样应该不会出现乱码了吧?或者是路径的问题,试试把文件换个简单明了的路径