Heim  >  Artikel  >  Backend-Entwicklung  >  PHP读取目录含特殊字符会变成?怎么将让MYSQL正确显示插入的UTF8编码数据

PHP读取目录含特殊字符会变成?怎么将让MYSQL正确显示插入的UTF8编码数据

WBOY
WBOYOriginal
2016-06-13 11:49:071431Durchsuche

PHP读取目录含特殊字符会变成?,如何将让MYSQL正确显示插入的UTF8编码数据
123.txt文件编码UTF8,浏览器页面编码UTF8,Windows系统,代码页936
新建文件夹内只有一个文件夹,文件名为http://zhidao.baidu.com/link?url=9iTctYWxBKDqzxTH-QrBs5t6Q9lhRkutHCfJHaGRNlzsswkqWsnYLdtKfCk7F_AJQwMm2yxJmoOCLDGipSjr-a这里的爱心,CSDN不让直接发出来=。=

<br /><?php<br />	$path = iconv("UTF-8", "GBK", "F:/新建文件夹/");<br />	$dir = dir($path);<br />	$fopen = fopen("F:/123.txt", "a");<br />	<br />	while ($file = $dir->read()) {<br />		if ($file != "." && $file != "..") {<br />			$file = iconv("GBK", "UTF-8", $file);<br />			echo $file;<br />			//fwrite($fopen, $file));<br />		}<br />	}<br />	fclose($fopen);<br />?><br />

不论是echo输出在浏览器还是保存到123.txt中,都显示的是?。
1、我试过is_dir($path.$file);显示空,所以我估计这个问号不是显示问题而是read()时windows返回的就是ASCII的?,请问要正常读取应该如何解决?
2、另外要将UTF8编码的数据存储到MYSQL中,而且要求在MYSQL中不显示乱码,请问MYSQL中数据库、表和列的数据类型和排序类型应该如何选择?
谢谢!
------解决方案--------------------

这个与编码没有什么关系吧?
------解决方案--------------------
我看你的程序
1.$fopen没有使用到,创建的目的是什么?
2.is_dir($path.$file);显示空,因为is_dir是判断是否目录,而$path.$file是文件,因此返回false。

如果只是需要读出123.txt的内容显示,可以这样写。
<br /><?php<br />$path = iconv("UTF-8", "GBK", dirname(__FILE__).'/新建文件夹/');<br />$file = '123.txt';<br /><br />echo '<meta http-equiv="content-type" content="text/html; charset=utf-8">';<br />echo file_get_contents($path.$file);<br />?><br />

关键是 这句,设置页面编码。


2.如果要数据库保存不乱码,可以设置mysql
character_set_client:客户端来源数据使用的字符集
character_set_connection:连接层字符集
character_set_results:查询结果字符集
为utf8,
关于mysql 编码设置可以参考 http://blog.csdn.net/fdipzone/article/details/18180325

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn