您的位置:首页 > 其它

VtigerCRM5.4.0数据导出导入csv乱码修复

2013-01-31 15:08 190 查看
导入数据文件CSV中文乱码修正:

在Smarty/templates/ImportStep1.tpl中的第99行插入<optionvalue=”GBK”>GBK</option>

<selectname="format"class="small">

<!--valuemustbeaknownformatformb_convert_encoding()-->

<optionvalue="GBK">GBK</option>//<<插入一行

<optionvalue="ISO-8859-1">ISO-8859-1</option>

<optionvalue="UTF-8">UTF-8</option>

</select>


再修改modules/Import/resources/Utils.php中的第21行

static$supportedFileEncoding=array('UTF-8'=>'UTF-8','ISO-8859-1'=>'ISO-8859-1');
修改为:static$supportedFileEncoding=array('UTF-8'=>'UTF-8','GBK'=>'GBK','ISO-8859-1'=>'ISO-8859-1');
添加了GBK的数组,smarty再引用这个的数组的值。


原理说明:

导入时的程序执行的是先用了\Smarty\templates\modules\Import\ImportBasic.tpl然后再引入不同的tpl文件

<tr><tdclass="leftFormBorder1"width="60%"valign="top">
{includefile='modules/Import/Import_Step1.tpl'}//第1步</td>
<tdclass="leftFormBorder1"width="40%"valign="top">{includefile='modules/Import/Import_Step2.tpl'}//第2步</td></tr>
<tr><tdclass="leftFormBorder1"colspan="2"valign="top">{includefile='modules/Import/Import_Step3.tpl'}//第3步</td></tr>
<tr><tdalign="right"colspan="2">{includefile='modules/Import/Import_Basic_Buttons.tpl'}</td></tr>
再调用了modules/Import/Import_Step2.tpl第34行代码如下:
<selectname="file_encoding"id="file_encoding"class="small">{foreachkey=_FILE_ENCODINGitem=_FILE_ENCODING_LABELfrom=$SUPPORTED_FILE_ENCODING}<optionvalue="{$_FILE_ENCODING}">{$_FILE_ENCODING_LABEL|@getTranslatedString:$MODULE}</option><!--这里是数据类型-->{/foreach}</select>

如果需要将一个Excel表格导入,要注意以下几个步骤:
另存为CSV文件后,必须的格式要如下(表列值必须是双引号),然后中间有逗号分隔。
"姓名","性别","电话","手机"
"张三","男","84577487","13878902345"
"李四","女","25878456","13978581278"

注意:如果用导出的客户资料csv文件为模版,用Excel来编辑客户资料用来导入,则必须要经过处理,
因为用Excel保存完csv文件之后,用UE打开后每列值是没有双引号的,如下:
姓名,性别,电话,手机
张三,男,84577487,13878902345
李四,女,25878456,13978581278

处理方法:
1、用UE打开,替换,为","
2、上传到linux系统,用vim编辑,在行首和行尾分别加入"
:%s/^/“/g(在每行行首添加")
:%s/$/"/g(在每行行尾添加")

然后就可以成功将中文导入了。


导出数据文件CSV中文乱码修正:

修改include/utils/export.php中的第208,232和240行

echoiconv("UTF-8","GBK",$header);//原来:echo$header;


echoiconv("UTF-8","gbk",$line);//原来:echo$line;}$log->debug("Exitingexportmethod...");returntrue;}


header("Content-Disposition:attachment;filename={$_REQUEST['module']}.csv");header("Content-Type:text/csv;charset=gbk");//原来:header("Content-Type:text/csv;charset=UTF-8");header("Expires:Mon,26Jul199705:00:00GMT");header("Last-Modified:".gmdate("D,dMYH:i:s")."GMT");header("Cache-Control:post-check=0,pre-check=0",false);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: