在Smarty/templates/ImportStep1.tpl中的第99行插入<option value="GB2312">GB2312</option>
<select name="format" class="small">
<!-- value must be a known format for mb_convert_encoding() -->
<option value="GB2312">GB2312</option>//插入一行
<option value="ISO-8859-1">ISO-8859-1</option>
<option value="UTF-8">UTF-8</option>
</select>
很多查找到的资料都是下面的写法:
<select name="format" class="small">
<!-- value must be a known format for mb_convert_encoding() -->
<option value="GBK">GBK</option> // <<插入一行
<option value="ISO-8859-1">ISO-8859-1</option>
<option value="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');
添加了GBK的数组,smarty再引用这个的数组的值。static $supportedFileEncoding = array('UTF-8'=>'UTF-8','GBK'=>'GBK','ISO-8859-1'=>'ISO-8859-1');
原理说明:
导入时的程序执行的是先用了\Smarty\templates\modules\Import\ImportBasic.tpl 然后再引入不同的tpl文件
<tr> <td class="leftFormBorder1" width="60%" valign="top">
{include file='modules/Import/Import_Step1.tpl'} //第1步 </td>
<td class="leftFormBorder1" width="40%" valign="top"> {include file='modules/Import/Import_Step2.tpl'} //第2步 </td> </tr>
<tr> <td class="leftFormBorder1" colspan="2" valign="top"> {include file='modules/Import/Import_Step3.tpl'} //第3步 </td> </tr>
<tr> <td align="right" colspan="2"> {include file='modules/Import/Import_Basic_Buttons.tpl'} </td> </tr>
再调用了modules/Import/Import_Step2.tpl 第34行代码如下:
<select name="file_encoding" id="file_encoding" class="small"> {foreach key=_FILE_ENCODING item=_FILE_ENCODING_LABEL from=$SUPPORTED_FILE_ENCODING} <option value="{$_FILE_ENCODING}">{$_FILE_ENCODING_LABEL|@getTranslatedString:$MODULE}</option> <!--这里是数据类型--> {/foreach}</select>
导入原理解释:把gbk编码转为UTF-8。刚说的和5.3的区别在于,他分成多个文件了,我们第一次看到他的导入是用了\Smarty\templates\modules\Import\ImportBasic.tpl 然后再引入不同的tpl文件
经过测试实际是用的第3步,而不是第2步,请看下篇文章,中文导入显示空白页的原因:http://blog.csdn.net/tongyu2009/article/details/13766869
导出的说法经测试是认同的
vtigerCRM 5.4 导出数据文件CSV中文乱码修正方法
修改include/utils/export.php中的第208和232行
echo iconv("UTF-8", "GBK", $header); //原来: echo $header;
echo iconv("UTF-8", "gbk", $line); //原来: echo $line; }
导出原理解释:为了在Windows中不产生乱码必须将CSV文件的编码变成GBK,所以通过iconv转换为gbk格式
经测试发现导出的csv不是utf-8格式,所有导致导入的时候中文不显示或乱码问题,我时用notepad++转换后然后在上传的
可以参考:http://cloudbbs.org/forum.php?mod=viewthread&tid=9737