PHP открывает файл в кодировке Unicode с другой страницы

0

У меня есть текстовый файл, хранящийся на сервере, который закодирован в 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;

но ничего не получилось, я получаю только искаженные персонажи. Что я могу сделать?

Спасибо.

Теги:
character-encoding
fopen

1 ответ

0
Лучший ответ

Я бы рекомендовал загрузить весь контент файла (используя 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 и циклов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню