美文网首页
Linux下java创建文件,文件名乱码解决方案new File

Linux下java创建文件,文件名乱码解决方案new File

作者: Bigglesworth | 来源:发表于2019-05-30 16:33 被阅读0次

1、文件内容乱码

我想将xml写入到文件中,在windows下测试没有问题,但是部署到Linux服务器上,就出现内容乱码的问题。我检查了Linux编码:echo $LANG 也是utf-8.

FileOutputStream fos=new FileOutputStream(new File("/usr/中文.xml"));
//writer=new XMLWriter(new FileWriter(new File("/usr/中文.xml")),format);
writer=new XMLWriter(fos,format);

开始的时候我用的是FileWriter,在windows上是没问题的,但是在Linux上死活不行。这个问题网上有很多博客都写了,换成FileOutputStream就可以了。但是文件的名字是不行的。

2、文件名称乱码

你用new File();创建的文件的中文名称会乱码,可能是???,也可能是。.啥乱码。然后你远程下载也是下载不了的,打开也是不行的,重命名可能也不行,远程工具可能会卡住。网上也有很多人说文件名是这个控制的,但是我试了没有用。如下所示,是不生效的:

System.setProperty("sun.jnu.encoding ","utf-8");

另外还有很多人说用字符转换:如下所示也是不生效的:

String filename2 = new String(filename.getBytes("gbk"),"utf-8");

我几乎没有招了,大多数都是这么说的,然而不行。我问了下我的一个同事,说你试试把utf-8直接写到里面去。我也只能试试,如下所示:

    String filename2 = new String(filename.getBytes("utf-8"));

沸腾了,居然可以了,风停了,雨停了,我又觉得我行了。哈哈哈

3、逼话少说,上代码

附上xml转换的生成文件的代码:

//main函数里调用生成xml的方法
String xml="";
Document document = DocumentHelper.parseText(xml);
OutputXml ot = new OutputXml();
ot.outputxml(document,filename);
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;


public class OutputXml {
        //生成xml的方法
    public  void  outputxml(Document doc,String filename){

           OutputFormat format = OutputFormat.createPrettyPrint();
           format.setEncoding("UTF-8");
           XMLWriter writer;
        try {
            String filename2 = new String(filename.getBytes("utf-8"));
            FileOutputStream fos=new FileOutputStream(new File(filename2));
            writer=new XMLWriter(fos,format);
            writer.write(doc);
            writer.close();
            
        } catch (IOException e) {
            e.printStackTrace();
        }
       }
}

因为网上没人这么写,所以我整理了一下,希望遇到的小伙伴可以尝试一下。

相关文章

网友评论

      本文标题:Linux下java创建文件,文件名乱码解决方案new File

      本文链接:https://www.haomeiwen.com/subject/eejvtctx.html