|
|
|
| Столкнулся с проблемой выбора кодировки для сайта. Проблема в том что данные введенные в форму и прошедшие обработку PHP скриптом отображаются крокозябрами, меняю и так и так и вообще непойму как правильно выставлять кодировку страниц и скриптов.
Есть кодировка самого файла а есть кодировка выставляемая тегом, вот в них 2-х у меня путаница.
Допустим кодировка файла utf-8 а кодировка заданная тегом win-1251, это страница с формой, в какой кодировке передадутся скрипту данные? В какой кодировке при этом должен быть скрипт?
И вообще, профессионалы, посоветуйте пожалуйста или опишите какую кодировку вы используете (и файла и в метатеге) при создании скриптов? Какая кодировка самая безопасная в плане беспроблемности будущего размещения на хостингах (а то было дело переписывал весь текст)
Заранее спасибо! | |
|
|
|
|
|
|
|
для: zateinik
(30.11.2007 в 11:12)
| | Если у вас кодировка файла utf-8 в тэге <META> также следует указывать именно эту кодировку - тэг не изменяет кодировку файла, он информирует о том, какую кодировку имеет файл.
PS Правильно использовать кодировку utf-8, удобнее cp1251. | |
|
|
|
|
|
|
|
для: cheops
(30.11.2007 в 11:21)
| | Ммм, когда я использую везде utf-8 появляются проблемы с русскими символами принятыми из формы, после последовательной обработки trim(), strtolower() и ucwords() они становятся крокозябрами, поменял кодировку с utf-8 на utf-8 но с использованием BOM (кстати, что такое BOM?) крокозяблы превращаются в красивые ромбики с вопросами :)
При использовании win-1251 такого не происходит, спасибо за совет! Но почему такая фигня если utf-8 самая универсальная кодировка? По идее с ней вообще проблем быть не должно? Или я неправ насчет универсальности? | |
|
|
|
|
|
|
|
для: Zateinik
(30.11.2007 в 11:29)
| | Все потому, что многие строковые функции не работают со строками в многобайтной кодировке. Для них нужно использовать функции мультибайтных строк. | |
|
|
|
|
|
|
|
для: sim5
(30.11.2007 в 11:35)
| | Что есть многобайтные кодировки и мультибайтные? | |
|
|
|
|
|
|
|
для: Zateinik
(30.11.2007 в 11:37)
| | А что такое UTF-8 по вашему? Если в кодировке 1251 используется один байт на сивол, то в UTF-8 два. | |
|
|
|
|
|
|
|
для: Zateinik
(30.11.2007 в 11:29)
| | Попробуй перевести текст в windows-1251, сделать с ним все необходимые действия, и перевести обратно в utf-8. Должно быть все нормально. | |
|
|
|
|
|
|
|
для: zateinik
(30.11.2007 в 11:12)
| | до недавнего времени использовал 1251, сейчас перешел на utf-8 столкнулся с некоторыми сложностями но в общем то смог их обойти и не сильно то жалею что перешел на новыю кодировку :) | |
|
|
|
|
|
|
|
для: KPETuH
(30.11.2007 в 11:28)
| | А почему ты перешел на новую кодировку? Что сподвигло?
Мне главное чтоб потом при использовании всего этого дела в инете на хостинге не возникло проблем. | |
|
|
|
|
|
|
|
для: Zateinik
(30.11.2007 в 11:31)
| | сподвигла мультиязычность... | |
|
|
|
|
|
|
|
для: KPETuH
(30.11.2007 в 11:28)
| | UTF-8 - самая универсальная. Она работает и с кириллицей, и с латиницей, и сотовые телефоны её понимают. Но есть некоторые сложности с её использованием, если до этого привык к windows-1251, и если на хостинге русский апач.
Я пишу скрипты в текстовом редакторе Akelpad. Он хорош тем, что программисту показывет текст в удобной для него кодировке (например ANSI кириллица), а созраняет текст в заданной (например UTF-8). Что очень важно - он позволяет сохранять файлы в UTF-8 без маркера BOM. Этот BOM не нужен, он только вредит. | |
|
|
|
|
|
|
|
для: coloboc66
(30.11.2007 в 11:32)
| | Аналогично использую AkelPad, оч хорошая весчь.
А можно поподробнее про BOM? | |
|
|
|
|
|
|
|
для: Zateinik
(30.11.2007 в 11:39)
| | Это три служебных байта в начале файла. По идее, они указываю программе обработчику, что файл находится в кодировке UTF. Но на деле для UTF-8 они только всё дело портят, мешают отправке заголовков. Их надо убирать. | |
|
|
|
|
|
|
|
для: coloboc66
(30.11.2007 в 11:53)
| | использую PHPed в нем не нашел ничего про ВОМ но все работает без проблем :) | |
|
|
|
|
|
|
|
для: KPETuH
(30.11.2007 в 12:06)
| | значит он изначально без BOM сейвит :) | |
|
|
|