Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Темный лес кодировок

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Master_YI
Отправлено: 08 Марта, 2015 - 09:45:33
Post Id



Частый гость


Покинул форум
Сообщений всего: 149
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




В общем все начиналось с того что я писал сайт еще на старинных версиях денвера, где PHP был еще версии так 4.4. Там все было легко и спокойно, но на хостинге, который я использую много лет, внезапно вышло обновление, версия PHP 5.5... Пришлось многое переделывать и это как-то затронуло кодировку. Есть 3 варианта событий, которые могут произойти в последствии моих действий:
1)На страничке все показывает странными знаками вопросов в ромбах.
2)На страничке все в странных иероглифах
3)Все отображается нормально(если перекодировать файл в UTF-8), но выходит ошибка сессии так как появляется символ BOM, а если кодировать UTF-8 без BOM то обратно к иероглифам.
Часть данных идет из базы и я настраиваю им кодировку вот так:
PHP:
скопировать код в буфер обмена
  1. mysqli_query($db, "set character_set_client='windows-1251'");
  2. mysqli_query($db, "set character_set_results='windows-1251'");
  3. mysqli_query($db, "set collation_connection='cp1251_general_ci'");

Ах да, а если я пытаюсь перекодировать файл в кириллицу 1251 то все в файле русское становится иероглифами.
В общем я уже окончательно запутался, все что я делал это последствие чтений разных форумов, последняя надежда на вас!

Благодарю за внимание, надеюсь на ответ.
(Добавление)
Да, я обновил денвер и теперь у меня ВСЕ-РАВНО устаревшая версия PHP, и переходить после этого на 5.5 как-то не комильфо. В общем проблемы с кодировками это не шутки шутить Улыбка
 
 Top
Мелкий Супермодератор
Отправлено: 08 Марта, 2015 - 10:08:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




http://php.net/manual/en/mysqli.set-charset.php

Master_YI пишет:
Все отображается нормально(если перекодировать файл в UTF-8),

Master_YI пишет:
character_set_client='windows-1251'

А?
В заголовках и meta-тегах ещё третий и четвёртый варианты соответственно?


-----
PostgreSQL DBA
 
 Top
Master_YI
Отправлено: 08 Марта, 2015 - 10:14:13
Post Id



Частый гость


Покинул форум
Сообщений всего: 149
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




Мелкий пишет:
http://php.net/manual/en/mysqli.set-charset.php

Master_YI пишет:
Все отображается нормально(если перекодировать файл в UTF-8),

Master_YI пишет:
character_set_client='windows-1251'

А?
В заголовках и meta-тегах ещё третий и четвёртый варианты соответственно?

А в мета-тегах я уже тоже многое пробовал, остановился с экспериментами на
CODE (html):
скопировать код в буфер обмена
  1. <meta charset="windows-1251">

А файл кодирован на UTF-8 без BOM. На денвере все плохо(иероглифы), зато на хостинге все отлично.
(Добавление)
Ссылку я кстати посещал, от нее пользы оказалось мало. И я читал что делать как я сделал не полезно, но это единственный вариант, пока что, который работает одинаково на обоих серверах.
(Добавление)
Я боюсь что нужно будет кодировать в кириллицу 1251 файл и переписывать весь русский текст...
 
 Top
DelphinPRO
Отправлено: 08 Марта, 2015 - 11:50:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




везде ставить utf-8
все файлы в utf-8 без BOM
метатег - utf-8
в хтаксесс - AddDefaultCharset utf-8

База, если она изначально в win 1251 экспортировать в виде SQL-файла, конвертировать кодировку в utf-8. Изменить сравнение на utf8_general_ci (в этом же файлике ручками). Залить файлик обратно в базу.

Перед манипуляциями с БД создать резервную копию Улыбка

Немного геморроя при переходе на нормальную кодировку, зато потом никаких проблем.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Master_YI
Отправлено: 08 Марта, 2015 - 13:21:06
Post Id



Частый гость


Покинул форум
Сообщений всего: 149
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




DelphinPRO пишет:
Изменить сравнение на utf8_general_ci

Спасибо. Тут у меня кириллица стоит вовсе, все файлы в утф-8 или кириллице(уже не понятно что где) в общем полный ужас, сейчас попробую! Улыбка
(Добавление)
Тэк-с. Мне лично это не помогло. А все просто, в браузере у меня стоит по умолчанию кодировка кириллица 1251.
И тогда следует вопрос:
Тоесть если какой-либо юзер с этой кодировкой зайдет на сайт то он увидит иероглифы? Как предотвратить появление таких неудач?

(Отредактировано автором: 08 Марта, 2015 - 13:47:17)

 
 Top
exlant
Отправлено: 08 Марта, 2015 - 20:27:27
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




Цитата:
Тоесть если какой-либо юзер с этой кодировкой зайдет на сайт то он увидит иероглифы? Как предотвратить появление таких неудач?

браузеру задать кодировку по умолчанию, следующим способом:
PHP:
скопировать код в буфер обмена
  1. header('Content-Type: text/html; charset=utf-8');

и юзер будет заходить с кодировкой utf-8, а вот если он уже сам поменяет кодировку, то это уже будут его проблемы!
 
 Top
Master_YI
Отправлено: 09 Марта, 2015 - 12:13:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 149
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




exlant пишет:
Цитата:
Тоесть если какой-либо юзер с этой кодировкой зайдет на сайт то он увидит иероглифы? Как предотвратить появление таких неудач?

браузеру задать кодировку по умолчанию, следующим способом:
PHP:
скопировать код в буфер обмена
  1. header('Content-Type: text/html; charset=utf-8');

и юзер будет заходить с кодировкой utf-8, а вот если он уже сам поменяет кодировку, то это уже будут его проблемы!

Огромное спасибо, то что нужно!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB