fn[mb_convert_encoding] Переконвертирование с авто определением изначальной кодировки

T
На сайте с 22.11.2009
Offline
2
1811

Доброго времени суток.

В общем, сразу приведу пример кода, а дальше уже распишу, что да как:

<?PHP 


mb_internal_encoding('utf-8');

$work_file_contents = file_get_contents(getcwd().'/ in.php');

$work_file_contents = mb_convert_encoding($work_file_contents, 'utf-8', 'auto');

file_put_contents (getcwd().'/out.php', $work_file_contents);

?>

Среда работы:

1) OS WIN XP Pro

2) PHP 5.2.4 (полная стандартная комплектация всех библиотек)

3) DENWER_3

Задача:

Перекодировать исходный файл in.php в кодировку utf-8, автоматически определив исходную кодировку файла, и сохранить результат в файл out.php

Описываю проблему:

Значит изначальный файл in.php находиться в кодировку windows-1251, Notepad++ и PHP Expert Editor определяют кодировку как ANSI.

При конвертации функцией mb_convert_encoding() с параметром 'auto' в качестве исходной кодировке, кодировка так и остается ANSI, причем все кириллические символы из документа пропадают.

Если указать явственно начальную кодировку в виде 'windows-1251', то конвертация проходит, кодировка файла изменяется при этом:

Notepad++ пишет что кодировка ANSI as UTF-8 (то есть как я понял UTF-8 без BOM)

HP Expert Editor пишет что кодировка просто UTF-8

При этом все кириллические символы сохраняются на своих местах. То есть все ок.

Что вообще за дурь блин происходит?

Почему так?

Как это можно реализовать?

rtyug
На сайте с 13.05.2009
Offline
263
#1

оно точно по-моиму не может определить исходную кодировку...

Спалил тему: Pokerstars вывод WMZ, etc на VISA 0% или SWIFT + Конверт USD/GBP,etc (net profit $0,5 млрд) (https://minfin.com.ua/blogs/94589307/115366/) Monobank - 50₴ на счет при рег. тут (https://clck.ru/DLX4r) | Номер SIP АТС Москва 7(495) - 0Ꝑ, 8(800) - 800Ꝑ/0Ꝑ (http://goo.gl/XOrCSn)
IN
На сайте с 23.01.2010
Offline
67
#2

Как вариант функцией mb_check_encoding проверять на совпадение ряд кодировок.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий