|
|
|
| перекодировал все доки в UTF-8 все файлы php и т.п. базу и данные в ней.. захожу на сайт вижу каракули... пока не выберу естественно кодировку нужную
вопрос как сделать так чтобы она автоматом сама определялась как Utf-8 ? | |
|
|
|
|
|
|
|
для: sidPR
(17.04.2007 в 23:58)
| | поставил <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> не помагло :( | |
|
|
|
|
|
|
|
для: sidPR
(18.04.2007 в 00:02)
| | А можно адресок сайта? | |
|
|
|
|
|
|
|
для: yuk
(18.04.2007 в 00:26)
| | Я поменял в конфиге сервера
default_mimetype = "text/html"
default_charset = "UTF-8"
|
и все встало на круги своя ... правильный ход ? | |
|
|
|
|
|
|
|
для: sidPR
(18.04.2007 в 01:48)
| | Я думаю, ход не очень правильный. Теперь у тебя не будут правильно отображаться остальные кодировки. Поскольку если явно указать в конфиге default_charset = "UTF-8", то PHP будет игнорировать, какая там кодировка указана в Content-type. Чтобы он этого не делал, поставь в конфиге
default_mimetype = "text/html"
;default_charset = "UTF-8" т.е. эту строку можно вообще убрать.
|
И еще прочитал, что такое вот начинается с версии 4.0b4 | |
|
|
|
|
|
|
|
для: yuk
(18.04.2007 в 10:26)
| | если я коментирую то он у меня выводит ероглифы а если не коментирую все как надо ... и в базу пишется как надо | |
|
|
|
|
|
|
|
для: sidPR
(18.04.2007 в 12:32)
| | Чесно говоря, затрудняюсь ответить. Тогда можно оставить, как ты сделал, но я так понимаю, что это все пока у тебя на локале? Ведь на хостинге далеко не всегда сможешь вписать что-то свое в конфиг. Попробуй реально разместить одну страничку где-нибудь, с блоком <meta>. Или прикрепи одну страничку в сообщение, чтоб пару слов там было. | |
|
|
|
|
|
|
|
для: yuk
(18.04.2007 в 14:08)
| | Ну вообще то я перекодировал все файлы PHP, HTML, JS Перекодировал базу с Utf-8 general ci а также все таблици и поля... все это на хостинге .. загрузил документ в хеадером UTF-8 но в конфиге не правил у меня ероглифы пошли а загрузил в конфиг эту строку все вывелось как надо :) меня больше волнует правильны были ли мои действия или я чтото не так сделал | |
|
|
|
|
|
|
|
для: sidPR
(18.04.2007 в 14:49)
| | Я так думаю, что раз все работает, все устраивает - значит правильно. Любую задачу можно решить разными способами. Вспомнил анекдот:
Маленький сын спрашивает у папы-программиста:
- Папа, а почему солнышко каждое утро появляется здесь, а вечером прячется там?
- А ты проверял? - Проверял. - Работает? - Работает. - Каждый день работает? - Каждый день.
- Тогда сынок, ничего не трогай, ничего не меняй!!! | |
|
|
|
|
|
|
|
для: yuk
(18.04.2007 в 15:16)
| | Так что, на бумаге теперь тоже в UTF-8 пишешь? | |
|
|
|
|
|
|
|
для: 12345
(18.04.2007 в 16:04)
| | 12345 непонял вопроса... :)) | |
|
|
|
|
|
|
|
для: sidPR
(18.04.2007 в 16:35)
| | ( > тема: перевелся полностью на UTF-8 ) | |
|
|
|
|
|
|
|
для: 12345
(18.04.2007 в 20:50)
| | Кстати по поводу непонятия если в документе будет другая кодировка...
$new = substr($news['news'], 0, 200);
|
Вот эта фигня в конец обрезанной строки вставляет символ далеко не из UTF-8 .. при этом на выводе не отображается как надо и при просмотре исходного текста корежит кодировку если коментирую то все ок ....
вот как избавится от подобного рода багов... или все обязанно быть в одной кодировке и тп ? | |
|
|
|
|
|
|
|
для: sidPR
(19.04.2007 в 02:09)
| | Может, есть функция какая-нибудь, которая перекодировывала бы строку? | |
|
|
|
|
|
|
|
для: yuk
(19.04.2007 в 09:47)
| | Автор неизвестен нашел решение проблемы :
При разработке многоязычных сайтов для HTML-страниц наиболее удобней и предпочтительней использовать кодировку UTF-8, обеспечивающую поддержку всех или почти всех существующих языков и кодирующую ASCII-символы (латинский алфавит, цифры и специальные символы) одним байтом, а национальные алфавиты — несколькими. Таким образом, кодировка UTF-8 имеет переменную физическую длину каждого символа. В связи с этим иногда возникают проблемы при программировании мультиязычных сайтов.
К примеру, в языке программирования PHP функции strlen и substr выдают некорректные результаты, если в строке имеются символы национального алфавита (поскольку предназначены для работы с однобайтовой кодировкой). Конечно же, в PHP существуют такие функции как mb_strlen и mb_susbtr, специально предназначенные для работы с мультибайтовыми строками. Но, по умолчанию поддержка Multibyte String Functions в PHP выключена, что автоматически ограничивает выбор хостинга для проектируемого сайта. Кроме того, при подключении модуля mb_string указывается набор поддерживаемых языков. А потому существует вероятность, что требуемого Вам языка может не оказаться в списке поддерживаемых.
Впрочем, существует другое, более удобное и гибкое решение проблемы. Воспользовавшись функциями PCRE, корректно воспринимающими кодировку UTF-8, можно написать свои функции utf8_strlen и utf8_substr:
<?php
function utf8_strlen($s)
{
return preg_match_all('/./u', $s, $tmp);
}
function utf8_substr($s, $offset, $len = 'all')
{
if ($offset<0) $offset = utf8_strlen($s) + $offset;
if ($len!='all')
{
if ($len<0) $len = utf8_strlen($s) - $offset + $len;
$xlen = utf8_strlen($s) - $offset;
$len = ($len>$xlen) ? $xlen : $len;
preg_match('/^.{' . $offset . '}(.{0,'.$len.'})/us', $s, $tmp);
}
else
{
preg_match('/^.{' . $offset . '}(.*)/us', $s, $tmp);
}
return (isset($tmp[1])) ? $tmp[1] : false;
}
?>
|
| |
|
|
|