今天修改下代码,想判断下文件是否存在,代码如下,其中$data['name']是我从数据库中读出的中文字符,比如一个人名,然后去查找路径下面是否含有该人的头像图片:
$headfile = './media/image/crew/'.$data['name'].'.jpg';
if (file_exists(headfile))
{
// do something
}
一直判断失败,开始以为是配置上面的安全模式导致,后来发现是编码问题,要将unicode编码转换为中文目录的gb2312才行,于是改成下面的形式:
$headfile = './media/image/crew/'.$data['name'].'.jpg';
$headfile = iconv('utf-8', 'gb2312', $headfile);
if (file_exists(headfile))
{
// do something
}
依然一直失败,纠结了很久,发现只需要转换文件名的编码就行了,路径不用转换,最后的版本:
$headfile = $data['name'].'.jpg';
$headfile = iconv('utf-8', 'gb2312', $headfile);
if (file_exists('./media/image/crew/'.headfile))
{
// do something
}
问题解决,应该是不含中文的路径就不用转换编码,只转换文件名就行了。