为什么编码是utf-8还是问号?

发布网友 发布时间:2022-04-23 13:24

我来回答

3个回答

热心网友 时间:2023-10-15 13:19

我想应该是UTF-8的BOM头造成的,BOM头是UTF-8文件头信息不会显示,问题出在它不是必选项,一些软件无法识别它,会把它当成内容的一部分导致乱码,

去除代码我只会PHP,不会JSP,自己找找吧

<?php
if (isset($_GET['dir'])) { //设置文件目录  
    $basedir = $_GET['dir'];
} else {
    $basedir = '.';
}
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, $auto = 1) {
    $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) {
        if ($auto == 1) {
            $rest = substr($contents, 3);
            rewrite($filename, $rest);
            return ("BOM found, automatically removed.");
        } else {
            return ("BOM found.");
        }
    }
    else
        return ("BOM Not Found.");
}
function rewrite($filename, $data) {
    $filenum = fopen($filename, "w");
    flock($filenum, LOCK_EX);
    fwrite($filenum, $data);
    fclose($filenum);
}
?>

来自:求助得到的回答

热心网友 时间:2023-10-15 13:19

1、先是你的文本编码是否保存为utf-8 2、有没有对文档的charset字符串声明文档为utf-8编码。

热心网友 时间:2023-10-15 13:20

文件在保存的时候也得是utf8追问保存的也是utf-8,我servlet跳转过来就不行....好像所有的servlet跳转后的页面中文都不能正常显示,我刚才没看清楚,请问怎么解决?

热心网友 时间:2023-10-15 13:19

我想应该是UTF-8的BOM头造成的,BOM头是UTF-8文件头信息不会显示,问题出在它不是必选项,一些软件无法识别它,会把它当成内容的一部分导致乱码,

去除代码我只会PHP,不会JSP,自己找找吧

<?php
if (isset($_GET['dir'])) { //设置文件目录  
    $basedir = $_GET['dir'];
} else {
    $basedir = '.';
}
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, $auto = 1) {
    $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) {
        if ($auto == 1) {
            $rest = substr($contents, 3);
            rewrite($filename, $rest);
            return ("BOM found, automatically removed.");
        } else {
            return ("BOM found.");
        }
    }
    else
        return ("BOM Not Found.");
}
function rewrite($filename, $data) {
    $filenum = fopen($filename, "w");
    flock($filenum, LOCK_EX);
    fwrite($filenum, $data);
    fclose($filenum);
}
?>

来自:求助得到的回答

热心网友 时间:2023-10-15 13:19

1、先是你的文本编码是否保存为utf-8 2、有没有对文档的charset字符串声明文档为utf-8编码。

热心网友 时间:2023-10-15 13:20

文件在保存的时候也得是utf8追问保存的也是utf-8,我servlet跳转过来就不行....好像所有的servlet跳转后的页面中文都不能正常显示,我刚才没看清楚,请问怎么解决?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com