<?php
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
$fil = file("$DOCUMENT_ROOT\explode.txt");
print_r($fil);
?>
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
$fil = file("$DOCUMENT_ROOT\explode.txt");
print_r($fil);
?>
header("Content-type: text/html; charset=utf-8");
function convertToUTF8($str) {
$charset = mb_detect_encoding($str, "auto");
if (strcasecmp($charset,'UTF-8') != 0) {
$str = mb_convert_encoding($str,'UTF-8',$charset);
}
return $str;
}
$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
$fil = file("$DOCUMENT_ROOT\explode.txt");
print_r(convertToUTF8($fil));
?>
就是本机运行的。用file()函数砸入了一个txt的内容放入数字中 用print_r()函数打印了就出现乱码了。不知道怎么解决。
我直接复制你的代码在本机上都无法运行。
Warning: mb_detect_encoding() expects parameter 1 to be string, array given in D:\wamp\www\php_explode.php on line 25Warning: mb_convert_encoding() expects parameter 1 to be string, array given in D:\wamp\www\php_explode.php on line 27
这个错误。
foreach($fil as $line){
print_r(convertToUTF8($line));
}
如果是编码问题用iconv('gb2312', "UTF-8", $text);
或iconv("UTF-8", 'gb2312', $text) 转换看看。。
总不见得一个一个编码去猜吧?所以还是先mb_detect_encoding再mb_convert_encoding的好
就算txt也是utf-8,没有header指定,如果浏览器默认显示不是utf-8,也可能乱码浏览器用右键逐个字符集试一下吧