现在的位置: 首页 > 综合 > 正文

Mantistbt系统导出excel为xml,以及csv 中文乱码问题解决

2013年06月22日 ⁄ 综合 ⁄ 共 1061字 ⁄ 字号 评论关闭

1,问题描述

我们部署了一个mantisbt BUG提交系统,在config_inc.php中配置语言为中文后,界面变成中文界面了,但是在查看问题栏目中,我们导出csv,会发现为乱码,而导出excel,后缀为xml,虽然通过excel软件可以正常打开,但是工作表的名字为乱码(即excel表下的注脚名字)。

2,具体分析

我们现在网上搜寻一番,发现有类似的解决方法,参见此链接,但是发现由于版本变化,我的是1.2.11,目前是最新,这个方案无法解决任何问题,放弃。

3,解决方法
        3.1 excel导出为xml后缀名的解决


我们看下,在mantisbt目录下,文件excel_xml_export.php中,我们看到如下一行:

header( 'Content-Disposition: attachment; filename="' . urlencode( file_clean_name( $t_export_title ) ) . '.xml"' ) ;

所以,改为:

header( 'Content-Disposition: attachment; filename="' .  urlencode(file_clean_name( $t_export_title ) ) . '.xls"' ) ;

这样解决了导出excel文件后缀为xml格式的问题,其实mantisbt系统设置为xml是非常正确的,因为xml是标准的文件数据交换模式,避免的系统编码的差异,但是windows下,还是变成xls算了。

    3.2 关于表格注脚文件名称为乱码的情况解决方法
上面只是解决了后缀名的问题,但是注脚还是乱码
    参见下图,我这是LibreOffice,MS一样的。


看了一下,在源代码中没找打门路,后来想到,原来我用过urlencode做过一个简答的密码转换和加密,突然发现这乱码有点像相,用url解码函数一看,发现果然是中文"报告"的转义,而我们这个项目叫bug报告,所以,明白了把,解决方法找到了,在excel_xml_export.php中

找到这一句代码:

echo excel_get_header( $t_export_title );
改为: echo urldecode(excel_get_header($t_export_title ));

问题解决了。

3.3 cvs文件乱码的问题
这个问题其实比较容找找到原因,如果在LINUX系统看是没有问题的,因为这个使用UTF-8编码的,而Windows默认是GBK编码。所以在Windows下excel中是乱码,只要用EDIT PLUS查看就可以了。


抱歉!评论已关闭.