2015-09-17 4 views
1

Всякий раз, когда мы создаем файл, вы можете выбрать тип кодирования в разных текстовых редакторах.Как узнать кодировку .php-файла

Мой вопрос заключается в том, что при использовании php делать чтение файла, но файл не указан в байтах, если он есть (UTF8, ISO 8859-1, ANSI ...).

Но я понимаю, что есть "биты" в конце этого файла, так как PHP возвращает последний STRING с 0. строкой '' (длина = 0)

<?php 
    $leitor = fopen('2.php','rb'); 
    while(!feof($leitor)){ 
     var_dump(fread($leitor, 1)); 
    } 
    fclose($leitor); 
?> 

enter image description here

Я считаю, что эта часть должна содержать тип кодирования (UTF-8, ANSI ...)

1) Где сообщается о типе кодирования файла (UTF8 - 000001, ANSI - 000011)?

2) Как я прочитал «биты» с PHP на самом деле хотите, чтобы прочитать эти последние биты, которые представлены:

строка «» (длина = 0)

Потому что я могу сделать это с байт:

function BinString2BitSequence1($mystring) {  
    $result = ""; 
    $end = strlen($mystring); 
    for($i = 0 ; $i < $end; $i++){ 
     $result .= str_pad(decbin(ord($mystring[$i])), 8, '0', STR_PAD_LEFT); 
    } 
    return $result; 
} 
+0

«ANSI» не является кодировкой. Я понятия не имею, что вы подразумеваете под «бит в конце этого файла». – melpomene

+0

Здравствуйте, я добавил изображение выше, чтобы показать, что я говорю. ATT – abcd

+0

Я не вижу никаких «бит», но я тоже не могу объяснить ваш вывод. Согласно [документации] (http://php.net/fread), последний вызов 'fread' должен был возвращать' FALSE', а не '' ''. – melpomene

ответ

3

Я считаю, что эта часть должна содержать тип кодировки (UTF-8, ANSI ...)

Вы неверны. Пустая строка, которую вы читаете в конце вашего файла, такова: пустая строка. Он не содержит информации.

Функция feof() возвращает только истину после чтение уже достигло конца файла; как таковой, это часто не полезно. Вместо этого, рассмотреть что-то вроде:

while (strlen($str = fread($fh, 1)) > 0) { 
    ... 
} 

Что касается кодировок текста, кодировка используется для файла не хранится в файле. Приложение должно быть выведено. В некоторых случаях (например, UTF-8 с спецификацией) это можно обнаружить надежно; в других случаях это может быть неоднозначным.

+0

Получил это. Поэтому я ищу определенные «байты», чтобы определить тип кодирования! Пример: '有' 'строка 'æ' (длина = 1) строка 'œ' (длина = 1) строка '‰' (длина = 1)' ATT – abcd

+0

Вы должны знать кодировку, прежде чем пытаться для понимания данных. Вы можете делать только хорошие догадки, которые могут быть неправильными. – Phil

-3

Здесь вы его take a look at this function Эта функция будет выводить кодирование на основе строки просто передать весь текст

+0

1) Ваша ссылка недоступна, потому что по какой-то причине вы явно пометили ее как код. 2) Ваша ссылка используется для перехода к португальской версии руководства (но вы уже исправили это). 3) Почему, черт возьми, у вас есть код, содержащий '** Flies away **' в вашем ответе? 4) Документация, на которую вы ссылались, на самом деле не объясняет, что делает функция ... 5) ... но, похоже, она угадывает кодировки. Это не очень полезно.6) Я не вижу, что это имеет отношение к вопросу OP о «бит в конце» некоторого файла. – melpomene

+0

Ты прав, я думаю – AleMelo

Смежные вопросы