编码

在php中

1.首先必须编码统一,及页面、php代码、数据库编码格式是否一致

2.html中DW中点击“修改”->“页面属性”->“标题/编码”->选择一致的编码即可

3.在创建数据库时“mysql练级校对”->选择正确的编码,在数据中创建表时,字段凡是和字符串相关的全部设置号统一的编码格式

4.在php代码中,在连接数据库的代码之后写这么一句“mysql_query('SET NAMES UTF8');”

5.javascript乱码,在<script charset='utf-8'></script>,charset属性值必须要加的

以上几点仅供参考


ajax异步传输中的乱码问题

由于浏览器的不兼容性,在异步传输的过程中js代码XHR.open("POST","checkname.php?id="+username,true);将中文的值传递到checkname.php中时,中文显示乱码,并且在js中加charset=“utf-8”也不管用,查资料之后,有这样一种解决办法

在js中XHR.open("POST","checkname.php?id="+username,true);

改为:XHR.open("POST",encodeURI("checkname.php?id="+username),true);

在这就介绍一下:encodeURI

encodeURI() 函数可把字符串作为 URI 进行编码。

encodeURI(URIstring)
URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。

说明

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

document.write(encodeURI("http://www.w3school.com.cn")+ "<br />")

还有一种编码的函数:
escape(string)
已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。

json不支持中文写入的问题解决


写两个函数,使其支持中文:

function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
{
foreach ($array as $key => $value) {
if (is_array($value)) {
arrayRecursive($array[$key], $function, $apply_to_keys_also);
} else {
$array[$key] = $function($value);
}
                                            
if ($apply_to_keys_also && is_string($key)) {
$new_key = $function($key);
if ($new_key != $key) {
$array[$new_key] = $array[$key];
unset($array[$key]);
}
}
}
}
                                            
                                            
function JSON($array) {
arrayRecursive($array, 'urlencode', true);
$json = json_encode($array);
return urldecode($json);
}

调用示例如下:

$guanggao_list=array(
0=>array(
"iid"=>21341872612,
"goods_name"=>"新款热销男装男士韩版修身裤休闲裤男裤 修身版休闲男装长裤子",
"goods_list_img"=>"http://img01.taobaocdn.com/bao/uploaded/i1/13692019653157760/T1RedmXvBdXXXXXXXX_!!0-item_pic.jpg_310x310.jpg",
"url"=>"http://item.taobao.com/item.htm?spm=a230r.1.10.17.G7a5Tc&id=18937863889",
"shichangjia"=>"359.00",
"taobaojia"=>"199.00",
"daoqi"=>1362105283,
"wangwang"=>"芭菲雨"
                                       
),
1=>array(
"iid"=>21341872612,
"goods_name"=>"新款热销男装男士韩版修身裤休闲裤男裤 修身版休闲男装长裤子",
"goods_list_img"=>"http://img03.taobaocdn.com/imgextra/i3/745475881/T20n1JXmVbXXXXXXXX_!!745475881.jpg_460x460.jpg",
"url"=>"http://item.taobao.com/item.htm?spm=a230r.1.10.17.G7a5Tc&id=18937863889",
"shichangjia"=>"359.00",
"taobaojia"=>"199.00",
"daoqi"=>1372105283,
"wangwang"=>"小鱼儿"
                                       
),
2=>array(
"iid"=>21341872612,
"goods_name"=>"新款热销男装男士韩版修身裤休闲裤男裤 修身版休闲男装长裤子",
"goods_list_img"=>"http://img03.taobaocdn.com/imgextra/i3/745475881/T20n1JXmVbXXXXXXXX_!!745475881.jpg_460x460.jpg",
"url"=>"http://item.taobao.com/item.htm?spm=a230r.1.10.17.G7a5Tc&id=18937863889",
"shichangjia"=>"359.00",
"taobaojia"=>"199.00",
"daoqi"=>1362105283,
"wangwang"=>"芭菲雨"
                                       
),
3=>array(
"iid"=>21341872612,
"goods_name"=>"新款热销男装男士韩版修身裤休闲裤男裤 修身版休闲男装长裤子",
"goods_list_img"=>"http://img03.taobaocdn.com/imgextra/i3/745475881/T20n1JXmVbXXXXXXXX_!!745475881.jpg_460x460.jpg",
"url"=>"http://item.taobao.com/item.htm?spm=a230r.1.10.17.G7a5Tc&id=18937863889",
"shichangjia"=>"359.00",
"taobaojia"=>"199.00",
"daoqi"=>1362105283,
"wangwang"=>"芭菲雨"
                                       
),
4=>array(
"iid"=>21341872612,
"goods_name"=>"新款热销男装男士韩版修身裤休闲裤男裤 修身版休闲男装长裤子",
"goods_list_img"=>"http://img03.taobaocdn.com/imgextra/i3/745475881/T20n1JXmVbXXXXXXXX_!!745475881.jpg_460x460.jpg",
"url"=>"http://item.taobao.com/item.htm?spm=a230r.1.10.17.G7a5Tc&id=18937863889",
"shichangjia"=>"359.00",
"taobaojia"=>"199.00",
"daoqi"=>1362105283,
"wangwang"=>"芭菲雨"
                                       
),
5=>array(
"iid"=>21341872612,
"goods_name"=>"新款热销男装男士韩版修身裤休闲裤男裤 修身版休闲男装长裤子",
"goods_list_img"=>"http://img03.taobaocdn.com/imgextra/i3/745475881/T20n1JXmVbXXXXXXXX_!!745475881.jpg_460x460.jpg",
"url"=>"http://item.taobao.com/item.htm?spm=a230r.1.10.17.G7a5Tc&id=18937863889",
"shichangjia"=>"359.00",
"taobaojia"=>"199.00",
"daoqi"=>1362105283,
"wangwang"=>"芭菲雨"
                                       
),
6=>array(
"iid"=>21341872612,
"goods_name"=>"新款热销男装男士韩版修身裤休闲裤男裤 修身版休闲男装长裤子",
"goods_list_img"=>"http://img03.taobaocdn.com/imgextra/i3/745475881/T20n1JXmVbXXXXXXXX_!!745475881.jpg_460x460.jpg",
"url"=>"http://item.taobao.com/item.htm?spm=a230r.1.10.17.G7a5Tc&id=18937863889",
"shichangjia"=>"359.00",
"taobaojia"=>"199.00",
"daoqi"=>1362105283,
"wangwang"=>"芭菲雨"
                                       
),
7=>array(
"iid"=>21341872612,
"goods_name"=>"新款热销男装男士韩版修身裤休闲裤男裤 修身版休闲男装长裤子",
"goods_list_img"=>"http://img03.taobaocdn.com/imgextra/i3/745475881/T20n1JXmVbXXXXXXXX_!!745475881.jpg_460x460.jpg",
"url"=>"http://item.taobao.com/item.htm?spm=a230r.1.10.17.G7a5Tc&id=18937863889",
"shichangjia"=>"359.00",
"taobaojia"=>"199.00",
"daoqi"=>1362105283,
"wangwang"=>"芭菲雨"
                                       
),
8=>array(
"iid"=>21341872612,
"goods_name"=>"新款热销男装男士韩版修身裤休闲裤男裤 修身版休闲男装长裤子",
"goods_list_img"=>"http://img03.taobaocdn.com/imgextra/i3/745475881/T20n1JXmVbXXXXXXXX_!!745475881.jpg_460x460.jpg",
"url"=>"http://item.taobao.com/item.htm?spm=a230r.1.10.17.G7a5Tc&id=18937863889",
"shichangjia"=>"359.00",
"taobaojia"=>"199.00",
"daoqi"=>1362105283,
"wangwang"=>"芭菲雨"
                                       
),
9=>array(
"iid"=>21341872612,
"goods_name"=>"新款热销男装男士韩版修身裤休闲裤男裤 修身版休闲男装长裤子",
"goods_list_img"=>"http://img03.taobaocdn.com/imgextra/i3/745475881/T20n1JXmVbXXXXXXXX_!!745475881.jpg_460x460.jpg",
"url"=>"http://item.taobao.com/item.htm?spm=a230r.1.10.17.G7a5Tc&id=18937863889",
"shichangjia"=>"359.00",
"taobaojia"=>"199.00",
"daoqi"=>1362105283,
"wangwang"=>"芭菲雨"
                                       
));
                                       
$str=JSON($guanggao_list);
                                       
print_r($str);



php文档编码设置


 a. 如果欲使用gb2312编码,那么php要输出头:header(“Content-Type: text/html; charset=gb2312"),静态页面添加<meta http-equiv="Content-Type" content="text/html; charset=gb2312">,所有文件的编码格式为ANSI,可用记事本打开,另存为选择编码为ANSI,覆盖源文件。

  b. 如果欲使用utf-8编码,那么php要输出头 :header(“Content-Type: text/html; charset=utf-8"),静态页面添加<meta http-equiv="Content-Type" content="text/html; charset=utf-8">,所有文件的编码格式为utf-8。


  最近需要用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些。 让我郁闷了好一会儿,去网上一查资料才知道这是iconv函数的一个bug。iconv在转换字符"―"到gb2312时会出错。解决方法很简单,就是在 需要转成的编码后加 "//IGNORE" 也就是iconv函数第二个参数后,如下:

iconv("UTF-8","GB2312//IGNORE",$data)

ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符串都无法被保存。


php中json在使用过程中的中文乱码问题解决


echo iconv("UTF-8","GB2312//IGNORE",$guanggao_list[$i]["goods_name"]) ;

忽视原来的编码问题,使用utf-8的编码格式


获取网页内容时的乱码问题

现在总结有两个原因:

1.编码问题。

解决:

                                    
<?php
$url = "http://news.ef360.com/Articles/2013-3-8/299954.html";
$contents=file_get_contents($url);
$contents=iconv("GBK", "UTF-8//IGNORE", $contents);
echo $contents;
?>

2.目标页面开了Gzip

解决:@curl获取时

<?php
function curl_get($url, $gzip=false){      
     $curl = curl_init($url);     
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
     curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);       
     if($gzip) curl_setopt($curl, CURLOPT_ENCODING, "gzip"); // 关键在这里       
     $content = curl_exec($curl);
        curl_close($curl);      
     return $content;
 }
?>

@file_get_contents获取时

<?php
file_get_contents("compress.".$url);
?>

php如何创建utf-8格式文件


一般php创建的文件默认不是utf-8格式的,在网上搜罗的解决办法如下:

<?php
$f=fopen("test.txt", "wb");
$text=utf8_encode("a!");
             
//先用函数utf8_encode将所需写入的数据变成UTF编码格式。
             
$text="\xEF\xBB\xBF".$text;
             
//"\xEF\xBB\xBF",这串字符不可缺少,生成的文件将成为UTF-8格式,否则依然是ANSI格式。
             
fputs($f, $text);
             
//写入。
             
fclose($f);
?>

这样创建出的文件编码格式确实是utf-8,但是放在文件中的汉字出现了乱码的现象,经过一番调试,代码如下:

<?php
$ctxtsubmit="好呀";
$f=fopen("../".$file, "wb");
    //$text=utf8_encode($ctxtsubmit);
    //先用函数utf8_encode将所需写入的数据变成UTF编码格式。
    $text="\xEF\xBB\xBF".$ctxtsubmit;
     //"\xEF\xBB\xBF",这串字符不可缺少,生成的文件将成为UTF-8格式,否则依然是ANSI格式。
    fputs($f, $text);
    //写入。
     fclose($f);
?>

至于"\xEF\xBB\xBF"为什么加这字符串,我也不明白

你可能感兴趣的:(编码)