×

微信扫一扫,快捷登录!

标签: 暂无标签
之前,admin管理员根据在群里我们解决导出中文乱码的问题整理了一个帖子,导出各种带内容的csv文件都可以正常地显示中文字符。参见:http://www.ITILxf.com/thread-34301-1-1.html

今天,群里的RedJonh网友,发现一个新的问题,只是照上面的方法修改完成后,在导出“数据管理”->“CSV导入”->“模板”的CSV文件时,保存下来的各种模板.csv文件仍然会乱码。于是,我有研究了一下程序,发现奇怪的,iTop在同样导出csv文件这样一个功能的时候,在这两个地方使用不同的方式生成csv文件。相当于必须同时修改这两处,才能保证导出的带内容的csv文件和模板csv文件都不出现乱码。

为了大家查看和使用方便,我把之前的修改和本次研究的结果整理发布在下面:

第一处:修改一个配置选项(修复系统绝大部分功能导出csv文件的中文乱码问题)
找到截图中的这个文件


该文件如图所示,初始安装好以后缺省是只读的,需要临时把“只读”那个对号去掉,使文件可以被修改。

然后打开该文件,找到第49行,内容应该为
'csv_file_default_charset'=>'ISO-8859-1',
修改为:
//'csv_file_default_charset'=>'ISO-8859-1',
'csv_file_default_charset'=>'UTF-8',

改好后保存。
然后再把刚才去掉的只读选项,选中,保证“只读”前面的对号出现,然后确定或应用,以此保证该文件仍然为只读文件。
这样改完以后,CSV导出的中文不乱码了。

第二处:修改一个csv导出程序,修复模板导出csv文件中文不乱码问题
找到文件C:\xampp\htdocs\pages\csvimport.php,
打开文件,找到第435行,内容应该如下:
$oPage->add($sResult);
把这一行修改为如下两行:
//$oPage->add($sResult);
$oPage->add("\xEF\xBB\xBF".$sResult);
然后保存文件。
这是,刷新模板导出的页面,重新导出模板的csv文件,打开新导出的csv文件试试看,是不是中文显示正常了?

希望大家喜欢。





上一篇:ITOP中通知的创建和使用
下一篇:北京知名电商招聘:运维工程师(LINUX、安全方向各一名)
tomora

写了 2 篇文章,拥有财富 72,被 3 人关注

您需要登录后才可以回帖 登录 | 立即注册
B Color Link Quote Code Smilies
sangning 发表于 2013-8-28 15:18:26
特别喜欢~~亲一个!
tomora 发表于 2013-8-28 15:23:04
sangning 发表于 2013-8-28 15:18
特别喜欢~~亲一个!

:$ 哈哈,谢谢支持
huangjie528 发表于 2013-8-28 16:23:08
学习了。
willhwe 发表于 2013-8-28 17:32:20
提供第二种处理方法:第一步也是一样的,先修改config-itop.php中的charset(字符集)参数为UTF-8,帖子有,不赘述;然后,找到,C:\xampp\htdocs\pages\ajax.csvimport.php,找到文件的428行,在if ($sDisposition == 'attachment')函数前,增加下述代码:
$sCharset = MetaModel::GetConfig()->Get('csv_file_default_charset');
if ($sCharset == 'UTF-8')
{
$sOutputData = UTF8_BOM.iconv('UTF-8', 'UTF-8//IGNORE//TRANSLIT', $sResult);
                                }
else
{
$sOutputData = iconv('UTF-8', $sCharset.'//IGNORE//TRANSLIT', $sResult);
                                }       
然后往下找到 if ($sDisposition == 'attachment')函数,将"charset=utf8"修改为"charset=$sCharset",再将"$oPage->add($sResult)"修改为“$oPage->add($sOutputData)”;
最后,把"$oPage->add('<p><textarea rows="5" cols="100">'.$sResult.'</textarea></p>')"修改为"$oPage->add('<p><textarea rows="5" cols="100">'.$sOutputData.'</textarea></p>')"。
昨晚上述修改后,重启应用(不确定是否需要,建议重启),模板下载后,打开就正常了!!
1234下一页
Powered by IT 运维管理
返回顶部