[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: utf-8
panich
Всё было замечательно и пользовался по неосторожности,а точнее по неопытности кодировкой 1251,но тут пришлось использовать ajax и квери и тут начались проблемы:те данные,которые квери передаёт в php файл превращаются в крякозябры!Посоветовали сменить на utf-8!

Я переконвектил всё в utf-8 с помощью notepad,но результата никакого(точнее если ручками переставить в браузере,что бы воспринимал как utf-8,то работает(относительно),а как перезагрузил-опять проблемы!),поэтому внёс в .htaccess:
AddDefaultCharset utf-8

AddCharset utf-8 *

<IfModule mod_charset.c>

CharsetSourceEnc utf-8

CharsetDefault utf-8

</IfModule>


И тут всё заработало,только вот то,что вытаскивает обработчик php из сторонних файлов превращается в ромбики с вопросами.Как уже достали эти кодировки-спать спокойно не могу!Короче,уже ушёл от проблем с ajax,так как и без него теперь проблем куча!!!Нуждаюсь в помощи!

П.С.Вот перекодировал в notepad все станицы,выставил ручками на страницах кодировку,в базе данных и таблицах всё изменил на utf-8...................и в чём тут может быть проблема!?!?!?



Спустя 24 минуты, 42 секунды (27.12.2011 - 11:19) Invis1ble написал(а):
Работай только с utf-8. Если есть инфа в другой кодировке и ты не можешь сменить ее - iconv() и mb_convert_encoding() в помощь.

Спустя 26 минут, 3 секунды (27.12.2011 - 11:45) redreem написал(а):
1. можно было и не переходить на utf, а просто при приеме данных в php конвертить их помощью iconv
2. если уж затеяли переход, то как минимум нужно сделать следующее:
2.1. сконвертить все файлы проекта (ВСЕ где могут встретиться русские символы) в notepad++ в utf-8 без BOM (обязательно без BOM)
2.2. в хидере хтмл должно быть <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
2.3. в php в отдаче заголовков чтоб было header("Content-type: text/html; charset=utf-8");
2.4. если есть работа с базой - то поменять при соединении с ней COLLATE и сконвертить всю базу в utf-8.

3. хтаксес тут - как мертвому припарка.
3. дажве все это полюбому на 100% работать скорее всего не будет, так как не исключены случаи сопряжения в коде utf-8 и сз1251 - их надо будет уже выискивать и корректить (удалять из логики эти сопряжения).

Спустя 6 минут, 17 секунд (27.12.2011 - 11:52) panich написал(а):
Вот вычитал такой код:
$path="./tmp"; //путь к каталогу, в котором лежат файлы для перекодировки
$handle=opendir($path);
while ($file = readdir($handle)){
if (is_file($path."/".$file)){
#находим по порядку все файлы и перекодируем
$text=file_get_contents($path."/".$file);//читаем данные из файла
#конвертируем текст из «utf-8» в «cp1251» с помощью функции iconv()

$text=iconv("utf-8", "cp1251", $text);
file_put_contents($path."/".$file, $text);//пишем данные обратно в файл
}
}

?>

Это его вставить отдельный файл,а файл в корень папки сайта или как?

Спустя 4 минуты (27.12.2011 - 11:56) redreem написал(а):
сделай лучше "ручками" - будешь уверен что все сконвертилось правильно. использование этого скрипта чревато многими подводными камнями, которые мы будем разжевывать дольше, чем конвертация руками.

Спустя 19 минут, 30 секунд (27.12.2011 - 12:15) panich написал(а):
Хорошо,тогда подводим итоги:
1. Перекодировал в notepad все станицы.
2. Выставил ручками на страницах кодировку в хедере.
3. В базе данных и таблицах всё изменил на utf-8.
4. А вод при использовании header("Content-type: text/html; charset=utf-8"); php ругается,что ранее уже в других файлах передавал подобную команду!

Спустя 32 минуты, 4 секунды (27.12.2011 - 12:47) Invis1ble написал(а):
Цитата
4. А вод при использовании header("Content-type: text/html; charset=utf-8"); php ругается,что ранее уже в других файлах передавал подобную команду!

http://phpforum.ru/index.php?showtopic=43337 вопросы №3,4 + комменты

Спустя 13 минут, 13 секунд (27.12.2011 - 13:00) redreem написал(а):
это означает что ты с BOM сконвертил. вот эти бомовские байты и пуляются серваком до хидера. надо выбирать utf-8 БЕЗ БОМ!

Спустя 4 минуты, 40 секунд (27.12.2011 - 13:05) redreem написал(а):
note: КОДИРОВАТЬ и ПРЕОБРАЗОВАТЬ в notepad++ - это разные вещи! нужно именно ПРЕОБРАЗОВАТЬ в utf-8 без BOM!

Спустя 4 минуты, 59 секунд (27.12.2011 - 13:10) panich написал(а):
Я описался-преобразовывал я!

Спустя 51 минута, 24 секунды (27.12.2011 - 14:01) panich написал(а):
Результат:
всё вернул в 1251 и саму переменную в ajax прогнал через mb_convert_encoding() и всё получилось.Соответственно 1,5 дня потерял,перечитал массу сайтов,задолбал знатоков 3-х форумов,вернулся к исходному коду и получил хорошие знания.
Всем большое спасибо,кто остался не безучастен к моей проблеме!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.