За последние 24 часа нас посетили 54214 программистов и 1724 робота. Сейчас ищут 822 программиста ...

Почему при сохранении файла нужно указывать кодировку?

Тема в разделе "Прочие вопросы по PHP", создана пользователем kombain, 4 дек 2010.

  1. kombain

    kombain Активный пользователь

    С нами с:
    28 авг 2010
    Сообщения:
    50
    Симпатии:
    0
    Как минимум в двух текстовых редакторах, что я знаю (обычный виндоуский блокнот и AkelPad) при сохранении нужно указывать кодировку сохраняемого файла. Зачем это делать надо, если файл - просто набор символов? Кодировку ведь никак не определишь, если открыть файл на другом компьютере в том же самом редакторе или другом. Или эт не так?
     
  2. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    kombain
    Внутри блокнота текст всегда хранится в юникоде, но сохранить можно и в более удобном/распространенном win1251. Просто при сохранении происходит конвертация.
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    потому что нотепад не просто показывает содержимое по-байтно. он заточен именно под текст. например буквы в юникоде занимают по два байта, а покажет он по одному символу в итоге.
     
  4. karlozzz

    karlozzz Активный пользователь

    С нами с:
    24 окт 2010
    Сообщения:
    430
    Симпатии:
    0
    Адрес:
    Y-OLA
    Информация сохраняется не символами, а битами, бит - 0 - сигнала нет, 1 - сигнал есть
    1 байт - 8 бит (11111111)
    И как ты узнаешь
    10001110
    Какая это буква?
    Тебе нужна кодировка
    00000001 - А
    00000010 - Б
    ...
    итд итп, понятно?
     
  5. kombain

    kombain Активный пользователь

    С нами с:
    28 авг 2010
    Сообщения:
    50
    Симпатии:
    0
    Тогда вот такой вопрос у меня имеется, тесно с темой связанный. Есть файл в кодировке UTF-8. При сохранении его в кодировке cp1251 (в блокноте) блокнот ругается и говорит, что в тексте есть символы, которые будут потеряны при сохранении в новой кодировке. Я игнорирую это и сохраняю в новой. После этого заново открываю мй пересохранённый файл и вижу, что все русские буквы там стали нечитаемы. Если открыть этот же файл (до сохранения в cp1251 и после сохранения) и поискать там некие скрытые символы, то ничего не увидишь. Делал я это в AkelPad и notepad.
    Кроме того эти скрытые символы каким-то образом мешают выполнению PHP, так если стереть часть html-кода (замечу, что это только html-код, а не php-код), то php-страница уже выполняет другие действия! Т.е. на странице заданные ранее алгоритмы могут выполниться неправильно, не произойдёт подключение к БД данных и прочее. Как с этим бороться можно?
     
  6. kombain

    kombain Активный пользователь

    С нами с:
    28 авг 2010
    Сообщения:
    50
    Симпатии:
    0
    Да и кстати. Если переоткрыть сохранённый файл снова в том же блокноте, то все русские символы отображаются корректно. Только в других редакторах (akelpad и notepad) русские символы становятся нечитаемыми.
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    пользуйся netbeans и не забивай себе голову.