file_put_contents 保存文件时乱码
2011-04-26 11:16
411 查看
tomcat让人抓狂,后台java写的一个应用程序生成的静态html居然是ANSI编码格式的文件,前台首页点击查看页面时直接乱码了…
使用新的tomcat、重新配置,然后放在webapp下重新弄,不使用Catalina/localhost的方式,依旧不行。。得,同事机器上可以跑,而且正常,就我机器跑不起来。因为要频繁更改模板文件,所以不太好用nginx反向代理到同事的机器上,最好能在本机跑..
所以决定用php把那些该死的乱码文件全部全部转一下编码再保存…
在使用file_put_contents的时候,遇到比较郁闷的问题,文件格式是对了,但里面却乱码了,后面想想,觉得应该是先删除文件再进行处理,试了一下,文件格式正确、内容正确。
在使用iconv函数时,先开始用gb2312->utf-8发现不行,部分字符串无法读入进去,然后抱着试试的心态,使用gbk->utf-8居然行了~ ~
---注:在转码前需要判定该文件编码格式是否为utf-8,如果为utf-8转码反而出错
花几分钟写的,有点乱,达到预期目标就成。
[/code]
[/code]
使用新的tomcat、重新配置,然后放在webapp下重新弄,不使用Catalina/localhost的方式,依旧不行。。得,同事机器上可以跑,而且正常,就我机器跑不起来。因为要频繁更改模板文件,所以不太好用nginx反向代理到同事的机器上,最好能在本机跑..
所以决定用php把那些该死的乱码文件全部全部转一下编码再保存…
在使用file_put_contents的时候,遇到比较郁闷的问题,文件格式是对了,但里面却乱码了,后面想想,觉得应该是先删除文件再进行处理,试了一下,文件格式正确、内容正确。
在使用iconv函数时,先开始用gb2312->utf-8发现不行,部分字符串无法读入进去,然后抱着试试的心态,使用gbk->utf-8居然行了~ ~
---注:在转码前需要判定该文件编码格式是否为utf-8,如果为utf-8转码反而出错
花几分钟写的,有点乱,达到预期目标就成。
[code][code] <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<?php
function reSaveFile($path) {
if (is_dir($path)) {
if ($handle = opendir($path)) {
while (($file = readdir($handle)) !== FALSE) {
if ($file != "." && $file != "..") {
$fileName = $path."/".$file;
if (is_file($fileName) && preg_match("/.html$/", $file)) {
echo "<div>正在处理文件:".$fileName."</div>";
saveHandler($fileName);
} else if (is_dir($fileName)) {
echo "<div style='color:#406c99;'>文件夹".$fileName."</div>";
reSaveFile($fileName);
} else {
echo "<div style='color:#f00;'>跳过的文件:".iconv("gbk", "utf-8", $fileName)."</div>";
}
}
}
closedir($path);
}
} else {
echo "1";
}
}
function isUTF8($str) {
if ($str === mb_convert_encoding(mb_convert_encoding($str, "UTF-32", "UTF-8"), "UTF-8", "UTF-32")) {
return true;
} else {
return false;
}
}
function saveHandler($fileName) {
$mode = "r";
$file_content = file_get_contents($fileName);
// $file_content = strip_tags($file_content);
if (isUTF8($file_content)) {
echo "<div>跳过utf-8文件:".$fileName."</div>";
return ;
}
$file_content = iconv("gbk", "utf-8", $file_content);
if (file_exists($fileName)) {
unlink($fileName);
}
file_put_contents($fileName, $file_content);
echo "<a href='".$fileName."'>".$fileName."</a>保存成功";
echo "<textarea>".$file_content."</textarea>";
}
reSaveFile("C:/AEApps/application/GTJ_GW3");
?>
[/code]
[/code]
相关文章推荐
- 缓存1 静态缓存-->读库保存成php文件 mkdir-->file_put_contents-->var_export -->include
- file_put_contents 写入文件,json,ajax中文乱码解决
- file_put_contents() failed to open stream: Permission denied 问题解决(生成日志文件)
- PHP使用内置函数file_put_contents写入文件及追加内容的方法
- ThinPHP第二十八天(F函数和file_put_contents区别|PHP生成PHP文件,Kindeditor编辑器使用方法)
- 将数据写入TXT文件中,file_put_contents与fwrite
- PHP文件写入函数file_put_contents并发追加写入丢失内容问题解决方法
- file_put_contents() failed to open stream: Permission denied 问题解决(生成日志文件)
- 读取文件和下载文件file_get_contents,file_put_contents
- PHP写入文件用file_put_contents代替fwrite优点多多
- [置顶] 调试,打印TXT文件,打印TXT日志, file_put_contents()
- 【转】用 PHP 内置函数 file_put_contents 写入文件
- php读写文件比较 (fread,fwrite,file_put_contents,file_get_contents)
- php 生成csv文件(file_put_contents实现)
- php 字符串写入文件或追加入文件(file_put_contents)
- file_put_contents在thinkphp中怎么使用,不生成文件的原因
- PHP中创建空文件的代码[file_put_contents vs touch]
- file_put_contents() -- 写入文件内容
- php 生成配置文件 file_put_contents