我有一个存储在以 UTF-8 编码的服务器中的文本文件,并且 im 试图从另一台以 shift_JIS 编码的服务器的网页加载该文件。不过我无法让它工作。这是我的原始代码:
function whatever() {
$open_file = fopen("http://www.myass.com/whatever.txt", 'r');
$whatevers = explode("*", fgets($open_file));
$whatevers_num =count($whatevers)-2;
$i=1;
while($i <= $whatevers_num) {
$details = explode("|", $whatevers[$i++]);
echo <<<EOF
$details[1] - $details[2] - $details[3]
EOF;
}
fclose($open_file);
}
我尝试这样做:
function whatever() {
$open_file = fopen(mb_convert_encoding("http://www.myass.com/whatever.txt", "shift_jis"), 'r');
$whatevers = explode("*", fgets($open_file));
$whatevers_num =count($whatevers)-2;
$i=1;
while($i <= $whatevers_num) {
$details = explode("|", $whatevers[$i++]);
echo <<<EOF
$details[1] - $details[2] - $details[3]
EOF;
}
fclose($open_file);
}
甚至这个:
function whatever() {
$open_file = fopen("http://www.myass.com/whatever.txt", 'r');
$whatevers = explode("*", fgets($open_file));
$whatevers_num =count($whatevers)-2;
$i=1;
while($i <= $whatevers_num) {
$details = explode("|", $whatevers[$i++]);
echo <<<EOF
$details[1] - $details[2] - $details[3]
EOF;
}
fclose($open_file);
}
ob_start();
whatever();
$get_whatever = ob_get_contents();
ob_end_clean();
$encode = mb_convert_encoding("$get_whatever", "shift_jis");
echo $encode;
但是没有任何效果,我只得到乱码字符。我能做什么?
谢谢。
我建议将文件的全部内容(使用 file_get_contents
或 CURL)加载到字符串中并在执行任何其他类型的处理之前对其进行转换。 这可确保您手头有完整的转换文本。
$utf_string = file_get_contents('http://www.myass.com/whatever.txt');
$sjis_string = mb_convert_encoding($utf_string, 'SJIS', 'UTF-8');
echo($sjis_string);
在此之后,您可以启动explode
和循环逻辑。