У меня есть текстовый файл, хранящийся на сервере, который закодирован в UTF-8, и я пытаюсь загрузить этот файл с веб-страницы на другом сервере, который закодирован в 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
и циклов.