У меня есть текстовые файлы 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" /> <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.
Вы не можете прочитать файл «как 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
в явном виде.
Если это все еще возвращает «ничто», у вас есть другая проблема, чем что-либо, связанное с кодировками.
Других решений пока нет …