Как прочитать текстовый файл UCS-2 как строку UTF-8 в PHP?

У меня есть текстовые файлы UCS-2. Теперь я хочу прочитать этот текстовый файл как строку UTF-8. Я использовал этот код для этого.

my_code.php:

<?php

error_reporting(0);
header('Content-Type: text/html; charset=utf-8');

echo '<form enctype="multipart/form-data" method="post"><p><input type="file" name="my_file" />&nbsp;<input type="submit" value="+" /><hr />';

$my_str = file_get_contents(($_FILES['my_file']['tmp_name']));
echo $my_str;

?>

viet_test.txt:

"Vietnamese" is "Tiếng Việt".

Но это возвращает неправильно: ��"Vietnamese" is "Ti�ng Vi�t"., Вот что я ищу: "Vietnamese" is "Tiếng Việt" (в UTF-8).

Можете ли вы сказать мне: «Что не так в моем коде? И как это исправить?».


Извините, я не очень профессионален в PHP.

0

Решение

Вы не можете прочитать файл «как UTF-8». Он содержит UCS-2, поэтому, прочитав его, вы прочтете строку UCS-2. Вы можете однако перерабатывать чтение строки UCS-2 в UTF-8:

$my_str = file_get_contents($_FILES['my_file']['tmp_name']);
$my_str = mb_convert_encoding($my_str, 'UTF-8', 'UCS-2');
echo $my_str;

Обратите внимание, что вам, возможно, придется использовать UCS-2BE или же UCS-2LE в явном виде.
Если это все еще возвращает «ничто», у вас есть другая проблема, чем что-либо, связанное с кодировками.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]