| 
	在使用zen-cart制作多国语言的电子商务网站时,经常会遇到乱码问题,下面做一个总结。 
	 1. 数据库造成的乱码问题。在后台录入数据时和前台展示时,页面的编码不一致可能导致该问题。例如后台管理录入数据时使用的编码为utf-8,而前台显示时,编码为iso-8859-7,则会产生乱码。解决办法,将后台语言包中的charset设置为 iso-8859-7,或者将前台语言包中的charset设置为 utf-8。对单语种的站点可以采取这种方式解决。 
	 2. 对于多语种的站点,若直接将站点的编码修改为 iso-8858-7,则有可能会导致其他语言的乱码问题。例如:希腊的编码为 iso-8858-7,土耳其的编码为 iso-8858-9,若在希腊环境下编辑产品信息,则此时录入数据库时的编码为 iso-8858-7,土耳其语言也被迫以 iso-8858-7的编码录入数据库,而在前台又不得不以 iso-8858-9的编码来展示土耳其语言,这样以来土耳其语言就可能出现乱码。解决办法,多余多语种的站点,全部采取 utf-8的编码格式。 
	 3. 采取utf-8编码格式后,因为一般从网上下载下来的语言包中的文件都不是utf-8格式,可能也会导致一部分语言出现乱码。所以,最好将下载下来的语言包全部转化为utf-8文件格式,你可以用文本编辑器,dreamweaver,或者其他编辑器将语言包中的每个文件转化为 utf-8 格式。如果觉得麻烦的话,可以下载一个文件编码批量转化工具(EncodingConvertor),该工具可以将一个文件夹中所有的文件进行编码转化。转化的时候要注意,原编码一定要选择正确,如果不知道原编码的话,打开语言包中的 language.php(请将language替换为语言名字,如english.php,greek.php), 看看CHARSET的定义是什么。 
	4. 将编码转化为 utf-8后,可能会导致页面比较错了的现象,这是因为文件以utf-8格式保存时,自动在文件开头加上了一个 unicode签名(BOM, Byte Order Mark), 这是三个不可见的字符(0xEF 0xBB 0xBF),用于让一些编辑软件(如记事本)知道这个文件是 以 utf-8编码的。php在 require以utf-8编码的文件时,却没有能够忽略这几个字符,结果导致这几个字符作为输出的一部分。这时若要时网页布局正常,则需要将这个BOM去掉,用dreamweaver打开文件,按 ctrl+J,在标题/编码选项卡中取消选中“包括Unicode签名”,再保存。也可以使用下面的代码来批量处理一个文件夹中的BOM(将下面的文件放到根目录,在浏览一下就可以了)。  
	<?php 
	//此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除 
	//By Bob Shen 
	require('includes/application_top.php'); 
	$basedir= DIR_FS_CATALOG. 'includes/languages'; //修改此行为需要检测的目录,点表示当前目录 
	$auto=1; //是否自动移除发现的BOM信息。1为是,0为否。 
	handler($basedir); 
	function handler($dir){ 
	    global $auto; 
	    if($dh = opendir($dir)){ 
	        while (($file = readdir($dh)) !== false) { 
	            if ($file!='.' && $file!='..') { 
	                if(!is_dir($dir."/".$file)){ 
	                    echo "filename: $dir/$file ".checkBOM("$dir/$file")." <br>"; 
	                } 
	                else{ 
	                    handler($dir."/".$file); 
	                } 
	            }             
	        } 
	        closedir($dh); 
	    } 
	} 
	function checkBOM ($filename) { 
	    global $auto; 
	    $contents=file_get_contents($filename); 
	    $charset[1]=substr($contents, 0, 1); 
	    $charset[2]=substr($contents, 1, 1); 
	    $charset[3]=substr($contents, 2, 1); 
	    if (ord($charset[1])==239 && ord($charset[2])==187 && ord($charset[3])==191) { 
	        if ($auto==1) { 
	        $rest=substr($contents, 3); 
	        rewrite ($filename, $rest); 
	        return ("<font color=red>BOM found, automatically removed.</font>"); 
	        } else { 
	        return ("<font color=red>BOM found.</font>"); 
	        } 
	    } 
	        else return ("BOM Not Found."); 
	    } 
	function rewrite ($filename, $data) { 
	    $filenum=fopen($filename,"w"); 
	    flock($filenum,LOCK_EX); 
	    fwrite($filenum,$data); 
	    fclose($filenum); 
	} 
	?> 
	按照以上步骤处理后,一般就不会发现乱码了。 (责任编辑:最模板) | 



 Varmo英文综合商品商城Ma
							人气:134
							Varmo英文综合商品商城Ma
							人气:134
						 ecshop仿梦芭莎2013最新版免
							人气:4041
							ecshop仿梦芭莎2013最新版免
							人气:4041
						 ecshop仿梦芭莎内衣模板
							人气:874
							ecshop仿梦芭莎内衣模板
							人气:874
						 Neoshop经济型外贸综合类
							人气:360
							Neoshop经济型外贸综合类
							人气:360
						 麦包包网模板|ecshop包类模
							人气:1501
							麦包包网模板|ecshop包类模
							人气:1501
						 ECSHOP仿海尔商城电器模板
							人气:1036
							ECSHOP仿海尔商城电器模板
							人气:1036