利用php代码转换编码格式的问题 我想知道 如何 用php 转换 一个 文件的 编码格式。。目前 我知道 了 转换 BOM 格式的 utf-8的方法但是 我想知道 如果 将其 变成 普通的utf-8就是 不含3个字节 那种希望大家 多帮帮忙。。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <?php$dir = "files";//文件夹目录if (isset ( $dir)) { $basedir = $dir;} else { $basedir = '.';}$auto = 1;checkdir ( $basedir );function checkdir($basedir) { if ($dh = opendir ( $basedir )) { while ( ($file = readdir ( $dh )) !== false ) { if ($file != '.' && $file != '..') { if (! is_dir ( $basedir . "/" . $file )) { // 如果是文件 echo "filename: $basedir/$file " . checkBOM ( "$basedir/$file" ) . " <br>"; } else { $dirname = $basedir . "/" .$file; // 如果是目录 checkdir ( $dirname ); // 递归 } } } 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) { // BOM 的前三个字符的ASCII 码分别为 239 187 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 );}?> 不含3个字节....你的意思是仅含ascii字符?? 二楼的 方法 我试过。。文件 中 的 \xEF\xBB\xBF 这三个 是 BOM的 utf-8默认 的 字节我 试着去掉它的 时候 他会变成 gbk 编码格式。。 直接把文件以流的形式读入,再用header头设置一下,看看是不是你要的格式。 5楼的 方法 我也试过了 也是不行。。我 生成 xml 的 utf-8 文件 可以 但是 生成 php的 还会变成 gbk我 试着 把 utf-8的 xml 用copy 函数 变成 php 但是变成php文件后 编码 就成了 gbk我也尝试了 用替换函数 去掉 BOM的utf-8中的 \xEF\xBB\xBF 可是 这样的话 文件还是会变成 gbk我最后 想 用自动下载的方式把文件头 输出为 application/php 并且 编码 改成 utf-8 但是 目前 自动下载没能实现 to 6楼,把你的代码整理一下,帖出来看看有什么问题。...理解不了为什么生成php就会变gbk function writefile($filename, $str){ if (!$fp = fopen($filename, 'w+')) { echo "打开文件".$filename."失败<br>"; exit; } if(fwrite($fp, utf8_encode($str)) === FALSE) { echo $filename."文件不能被写入<br>"; exit; } echo "转换".$filename."成功!<br>"; fclose($fp);}writefile('test.txt',"测试文件");writefile('test.xml',"测试文件");这段代码 生成的 xml文件 是 utf-8格式的生成的 txt文件 是 gbk格式的。。我试了 好几次 貌似 只有 xml是utf-8 我用你的代码分别测试生成base64和utf8文件都正常, 原来 是我 easyEclipse的 问题那个开发工具 给我字段把文本文件转成 gbk了郁闷谢谢楼上 .date("Y-m-d H:i:m")修改问题,求助高手 一个域名下怎么显示www.csdn.net/test 或者www.test.csdn.net 一次去面试,面人问我怎么理解CMS 关于php运行错误提示,急.高分请教 下载链接如何防止直接打开文件? 关于引用脚本,生成html代码,会在本地保存后出现两份 不明白Zend_Controller_Dispatcher_Token 中文显示乱码的问题 mysql 查询问题 关于删除数组数据的问题 关于SNS网站中不同用户不同页面的实现 怎么样用zend studio进行web page跟踪调试
$dir = "files";//文件夹目录
if (isset ( $dir)) {
$basedir = $dir;
} else {
$basedir = '.';
}
$auto = 1;
checkdir ( $basedir );function checkdir($basedir) {
if ($dh = opendir ( $basedir )) {
while ( ($file = readdir ( $dh )) !== false ) {
if ($file != '.' && $file != '..') {
if (! is_dir ( $basedir . "/" . $file )) { // 如果是文件
echo "filename: $basedir/$file " . checkBOM ( "$basedir/$file" ) . " <br>";
} else {
$dirname = $basedir . "/" .$file; // 如果是目录
checkdir ( $dirname ); // 递归
}
}
}
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) { // BOM 的前三个字符的ASCII 码分别为 239 187 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 );
}
?>
不含3个字节....你的意思是仅含ascii字符??
文件 中 的 \xEF\xBB\xBF 这三个 是 BOM的 utf-8默认 的 字节
我 试着去掉它的 时候 他会变成 gbk 编码格式。。
我 生成 xml 的 utf-8 文件 可以
但是 生成 php的 还会变成 gbk
我 试着 把 utf-8的 xml 用copy 函数 变成 php
但是变成php文件后 编码 就成了 gbk
我也尝试了 用替换函数 去掉 BOM的utf-8中的 \xEF\xBB\xBF 可是 这样的话 文件还是会变成 gbk
我最后 想 用自动下载的方式把文件头 输出为 application/php 并且 编码 改成 utf-8 但是 目前 自动下载没能实现
function writefile($filename, $str)
{
if (!$fp = fopen($filename, 'w+'))
{
echo "打开文件".$filename."失败<br>";
exit;
}
if(fwrite($fp, utf8_encode($str)) === FALSE)
{
echo $filename."文件不能被写入<br>";
exit;
}
echo "转换".$filename."成功!<br>";
fclose($fp);
}
writefile('test.txt',"测试文件");
writefile('test.xml',"测试文件");这段代码 生成的 xml文件 是 utf-8格式的
生成的 txt文件 是 gbk格式的。。
我试了 好几次 貌似 只有 xml是utf-8
那个开发工具 给我字段把文本文件转成 gbk了
郁闷
谢谢楼上