PHP によって呼び出される MYSQL データが文字化けする理由をお聞きしてもよろしいでしょうか?

WBOY
リリース: 2016-06-23 13:52:24
オリジナル
833 人が閲覧しました

function writeStatistic($sql,$txt_name){	$filename="".$txt_name;//注意修改文件的路径	if (file_exists($filename)) {		$fp=fopen($filename,"a+");	}else{		$fp=fopen($filename,"w+");	}	$text=$sql."\r\n";	fwrite($fp,$text);	fclose($fp);}/*** 向指定文件写入字符集设置句柄** 参数: string $txt_name : 指定文件名* 返回: void* 作用域: public*/function writeStatistic_set_name($txt_name){    $set_name="<?xml version=\"1.0\" encoding=\"utf-8\"?><urlset>";	//转化为utf-8编码		$filename="".$txt_name;//注意修改文件的路径	if (file_exists($filename)) {		unlink($filename);		$fp=fopen($filename,"a+");	}else{		$fp=fopen($filename,"w+");	}	$text=$set_name."\r\n";	fwrite($fp,$text);	fclose($fp);}$nowDate = date("Y-m-d");$txt_name='sitemap.xml';writeStatistic_set_name($txt_name);$sql="select * from jieqi_article_article ORDER BY lastupdate DESC";$db->query($sql);for($i=1;$i<= $db->num_rows();$i++){	$db->next_record();	$siteid = $db->f(siteid);	$haha = _;	$articleid = $db->f(articleid);	$newname = $db->f(articlename);	$newid = $db->f(lastchapterid);	$nowDate = $db ->f(lastupdate);	$nowDate = date("Y-m-d H:m:s",$nowDate);	$url = "	<url>	<loc>http://www.1.org/html/$articleid/$newid.html </loc>	<lastmod>$nowDate</lastmod>	<changefreq>always</changefreq>	<priority>1.0</priority>	<name>$newname</name>	</url>";	//转化为utf-8编码	$url = utf8_encode($url);	writeStatistic($url,$txt_name);}$db->free();$over='</urlset>';writeStatistic($over,$txt_name);print "Google Sitemap生成结束!<br/><a href='sitemap.xml' target='_blank'>点击这里查看</a>";exit;?>
ログイン後にコピー


生成された結果はこんな感じです。 。


漢字を正しく呼び出すにはどうすればよいですか?


ディスカッションへの返信 (解決策)

間違った関数を使用しました。
$url = utf8_encode($url);
$url = iconv(;gbk', 'utf-8', $url); に変更する必要があります

もちろん、$url のデータエンコーディングは正しい必要があります

実際、$db は文字セットを utf8 に設定するので、トランスコードする必要はありません

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート