Сергей Добросклонов
|
|
« : 19-06-2010 19:56 » |
|
Решил перейти на кодировку utf-8 с windows-1251... Переделал кодировку БД, всех таблиц в ней, сравнения для каждого поля тоже выставил utf-8, так же кодировку запросов. Но потом дело дошло до страниц... Пересохраняю их в utf-8, в голове указываю эту же кодировку. Во всех редакторах отображается корректно, но в браузерах иероглифы, притом местами (то, что написано непосредственно на странице выводится криво, то то подключено инклюдами выводится корректно). Помогите, пожалуйста, разобраться с этой бедой.
|
|
|
Записан
|
|
|
|
Золотая Лань
Молодой специалист
Offline
Пол:
|
|
« Ответ #1 : 19-06-2010 20:06 » |
|
а вот если бы пример…
|
|
|
Записан
|
|
|
|
Сергей Добросклонов
|
|
« Ответ #2 : 19-06-2010 20:12 » |
|
Пример? Аааа. В каком виде? Скриншот или код?
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #3 : 19-06-2010 20:26 » |
|
Барин, возможно http-сервер выдает некую кодировку по умолчанию. Надо либо ее переопределить, либо (что существенно правильнее) скрипт должен определить заголовок Content-Type с указанием там кодировки.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Сергей Добросклонов
|
|
« Ответ #4 : 19-06-2010 20:54 » |
|
У меня есть такой заголовок: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> Может это зависеть от настроек сервера? Может необходимо подправить что-то в конфигурации?
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #5 : 19-06-2010 22:58 » |
|
Барин, менять надо не только meta-тег, но и заголовок HTTP! <?php
header('Content-Type: text/html; charset=utf-8'); echo '.....HTML.....';
?>
Мета-тег вторичен и имеет смысл в офлайн, а онлайн браузер ориентируется на ответ сервера.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Сергей Добросклонов
|
|
« Ответ #6 : 20-06-2010 12:12 » |
|
<?php
echo '.....HTML.....';
?>
А что это, где пишется и что вместо многоточий должно быть?
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #7 : 20-06-2010 14:23 » |
|
Барин, догадайся с трех раз
под html понимать html код страницы
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Сергей Добросклонов
|
|
« Ответ #8 : 20-06-2010 14:46 » |
|
<?php header('Content-Type: text/html; charset=utf-8'); ?>
Написал это самой первой строкой на странице... Не знаю правильно это или нет, но подействовало...Хотя странно: скидывал свой файл одному человеку, он сказал, что у него и без этого всё шикарно открылось... Правда когда были иероглифы авторизация работала, а теперь нет. Вводишь корректные данные, а он не в какую... Так понимаю, теперь необходимо при подключении к базе как-то кодировку указать?
|
|
« Последнее редактирование: 20-06-2010 15:00 от Барин »
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #9 : 20-06-2010 20:36 » |
|
Барин, ёпрст... Дык, скидывал страницу офлайн? Тогда "header()" вообще не при чем. Связывай уже причинно-следственную связь! Чудеса - они только при недостатке знаний происходят, либо по переизбытку разных возбудающих веществ (например, гормонов )
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Сергей Добросклонов
|
|
« Ответ #10 : 20-06-2010 21:44 » |
|
Не, не.... Я кидал ему исходник php, он на своём сервере запускал. У меня вот теперь только одна проблема осталась: вписываю строку в textarea, отправляю в базу... Мозила всё хорошо добавляет, ИЕ добавляет пустую строку, если я при подключении к базе указываю mysql_query("SET NAMES utf8", $db); и добавляет знаки вопросов если mysql_query("SET NAMES cp1251", $db); Хотя уже всё переведено на utf-8 и страницы и базы. p.s. Добавление происходит спомощью AJAX'а....
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #11 : 21-06-2010 05:54 » |
|
Честно говоря, ничего не понял.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
baldr
|
|
« Ответ #12 : 21-06-2010 06:07 » |
|
Барин, в настройках PHP какое значение стоит у переменной "default_charset"?
|
|
|
Записан
|
Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
|
|
|
Сергей Добросклонов
|
|
« Ответ #13 : 21-06-2010 08:13 » |
|
Стояла iso-8859-1. Поставил utf-8, стало всё хорошо. Только такой ещё вопрос: если я буду арендовать хостинг, то там возможно будет изменять файл php.ini?
|
|
|
Записан
|
|
|
|
baldr
|
|
« Ответ #14 : 21-06-2010 08:32 » |
|
Барин, я думаю что нет. Но ты можешь воспользоваться функцией ini_set() для установки некоторых переменных в пределах одной сессии (одного исполнения файла). Для того, чтобы быть точно уверенным в кодировке - можешь принудительно определять кодировку и переводить с помощью iconv... Но это тоже на любителя...
|
|
|
Записан
|
Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
|
|
|
Золотая Лань
Молодой специалист
Offline
Пол:
|
|
« Ответ #15 : 21-06-2010 10:24 » |
|
.htaccess вроде как никто не отменял. В подавляющем большинстве случаев можно там определять кодировку. Если же нет, то стоит поднять вопрос о целесообразности хоститься именно у этой компании.
|
|
|
Записан
|
|
|
|
baldr
|
|
« Ответ #16 : 21-06-2010 10:27 » |
|
Золотая Лань, в .htaccess все просто, но он только для апача, а настройки php там не задашь.
|
|
|
Записан
|
Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #17 : 21-06-2010 12:00 » |
|
baldr, можно задать. php_value name value Sets the value of the specified directive. Can be used only with PHP_INI_ALL and PHP_INI_PERDIR type directives. To clear a previously set value use none as the value.
Note: Don't use php_value to set boolean values. php_flag (see below) should be used instead.
php_flag name on|off Used to set a boolean configuration directive. Can be used only with PHP_INI_ALL and PHP_INI_PERDIR type directives.
php_admin_value name value Sets the value of the specified directive. This can not be used in .htaccess files. Any directive type set with php_admin_value can not be overridden by .htaccess or ini_set(). To clear a previously set value use none as the value.
php_admin_flag name on|off Used to set a boolean configuration directive. This can not be used in .htaccess files. Any directive type set with php_admin_flag can not be overridden by .htaccess.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Золотая Лань
Молодой специалист
Offline
Пол:
|
|
« Ответ #18 : 21-06-2010 15:15 » |
|
baldr, основная сложность с .htaccess в том, что некоторые хостеры ограничивают к нему доступ, то есть, директивы, прописанные в .htaccess просто не работают. Особенно часто (как раз уж пошла речь о юникоде) в php.ini выставлены неприемлемые параметры mbstring, а то и вовсе выключено это счастье, а через .htaccess правды не добиться.
|
|
|
Записан
|
|
|
|
baldr
|
|
« Ответ #19 : 21-06-2010 17:18 » |
|
RXL, спасибо, очень ценная информация - не знал.. Золотая Лань, согласен
|
|
|
Записан
|
Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #20 : 21-06-2010 20:22 » |
|
Сейчас стоимость самых простых VPS не сильно отличается от стоимости виртуального хостинга на базе Апача. Там можно крутить что угодно и как угодно, включая установку нужных версий ПО.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
|