java在linux环境生成xml个别文件乱码

clipboard.png

如上图所示:在informix数据库中存在并且不可避免的出现这样的全角输入法输入的字符,在linux环境下生成xml文件的时候这些字符会导致文件乱码,整个xml文件都会被破坏,但是在本机windows测试环境下是没有问题的,请问该如何解决!注:xml编码使用的是GBK格式,用来生成xml IO流的编码也是GBK

没有代码怎么行!

  String path = base+fileName ;
        File f = new File(base) ;
        if(!f.exists()){ f.mkdirs() ;}
        if(new File(path).exists()){ new File(path).delete() ; }
        try {
            Document document = DocumentHelper.createDocument();
            document.add(root);
            document.setXMLEncoding("GBK");

            //创建写文件方法
            FileOutputStream fos = new FileOutputStream(path);
            XMLWriter xmlWriter = new XMLWriter(fos,xmlFormat);

            //写入文件
            xmlWriter.write(document);
            //System.out.println("Encoding : "+document.getXMLEncoding());
            //关闭
            xmlWriter.close();
            return  true ;
        }   catch (Exception e){
            e.printStackTrace();
        }
阅读 3.5k
1 个回答

将每个xml文件中的值过滤一下就行!

  /**
     * 节点文本乱码过滤
     * @param txt
     * @return
     */
    private String speacial(String txt){

        String res = "";
        for(int i = 0; i < txt.length(); ++i){
            char ch = txt.charAt(i);
            if( Character.isDefined(ch) && ch!= '&' && ch != '<' && ch != '>'
                    //转换字符是否需要符合高低代理项代码单元?
                    && !Character.isHighSurrogate(ch) && !Character.isISOControl(ch) &&
                    !Character.isLowSurrogate(ch)
                    ){
                res = res + ch;
            }else{
                ch = ' ';
                res += ch;
            }
        }
        return res;
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题