Неправильно отображается UTF-8 из SSI.php

Автор Frost, 23 марта 2009, 13:51:03

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Frost

Форум в UTF-8 установлен на Денвер. Запускаю ssi_examples.php, русский отображается артефактами (показывает нормально только если в браузере вручную поставить кодировку UTF-8). Пробовал сделать как здесь написано. Не помогает. Может я не туда вставляю, или эта информация устарела. Подскажите решение пожалуйста. Версия SMF 1.1.8.

Хотел бы в дальнейшем выводить некоторую информацию на главной странице сайта (Joomla 1.0.12).

BIOHAZARD

добавть meta таг в заголовок страницы
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Roman_Grishin

слушайте, у меня вообще никак не работает кодировка.
добавлял метатег windows-1251
добавлял метатег cp-1251
добавлял метатег utf-8
менял кодировку самого ssi.php на utf-8, менял на ANSI, все без толку. в чем может быть проблема то???
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

digger®

Цитата: Roman_Grishin от 10 августа 2009, 00:55:26
слушайте, у меня вообще никак не работает кодировка.
добавлял метатег windows-1251
добавлял метатег cp-1251
добавлял метатег utf-8
менял кодировку самого ssi.php на utf-8, менял на ANSI, все без толку. в чем может быть проблема то???

В settings.php добавить строчку
$db_character_set = 'cp1251';

Roman_Grishin

а форум в крякозябры не уйдет после такого?
у меня форум utf
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

Roman_Grishin

у меня там прописано $db_character_set = 'utf8';
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄


Roman_Grishin

а как же настроить ssi чтоб без крякозябров выводилось??
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄


Roman_Grishin

у меня в подписи ссылка
www.forumforall.net
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄


Roman_Grishin

это в индекс.темплейт, там хоть "charset=krackozybr" прописывай - ничего не изменится... это только пометка для браузера. форум в ютф, все файлы в ютф, только один метатег показывает windows-1251 при том это вообще ничего не значит...

могу поставить charset=utf-8, если вас смущает windows-1251 =)
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

digger®

Цитата: Roman_Grishin от 10 августа 2009, 03:35:26
это в индекс.темплейт, там хоть "charset=krackozybr" прописывай - ничего не изменится... это только пометка для браузера. форум в ютф, все файлы в ютф, только один метатег показывает windows-1251 при том это вообще ничего не значит...

А форум мы не браузером что ли смотрим?
В index.russian-utf8.php у $txt['lang_character_set'] какое значение?

Roman_Grishin

Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄


Roman_Grishin

я потестил http://forumforall.net/ssi_examples.php в опере, хроме и ИЕ7 - везде крякозябры вместо русского, вот проблема...
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

BIOHAZARD

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/> - вот это действительно проблема
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Roman_Grishin

на этом форуме тоже самое windows-1251, этот форум разве не utf-8 ?
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

BIOHAZARD

нет, этот как раз в windows-1251, и в тэгах у него windows-1251, и хост отдаёт правильные заголовки
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Roman_Grishin

а вот и доказательство что вообще никакой разницы нет что писать в метатегах:
поставил в index.template.php метатег с utf-8 и НИЧЕГО не изменилось...
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

BIOHAZARD

страница forumforall.net/ssi_examples.php

в теле страницы:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/>

в ответе сервера:
Content-Type: text/html; charset=windows-1251

и где тут UTF-8??

PS: в ssi_examples.php не используется тема оформления
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

Roman_Grishin

переправил в forumforall.net/ssi_examples.php кодировку на utf-8, результата нет ((
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

Mavn

в настройках веб сервака случаем не указана принудительная кодировка??

в httpf.conf или .htaccess директива

AddDefaultCharset windows-1251
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Roman_Grishin

httpf.conf или .htaccess директива
у меня нет таких файлов
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

Mavn

ну так задай вопрос хостеру в чем проблема то?
или сам задай кодировку через .htaccess
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Roman_Grishin

если Вам не трудно, поможете с htaccess?
а то я не знаю что писать в нем и куда его залить, хотя предполагаю что в корень сайта.
у меня форум в utf8, после манипуляций с .htaccess ничего не заглючит?
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

Mavn

1. свяжитесь с хостером и задайте вопрос ему о принудительной кодировке страниц директиву при помощи которой производится данное действие я привел выше.
2. закройте форум и посмотри как будет работать при установке нужной кодировки т.е. UTF8
файл .htaccess можете разместить в папке непосредственно с форумом

AddDefaultCharset UTF8
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Roman_Grishin

спасибо! сейчас попробую
...
...
...
Отлично!!! Спасибо товарищу Админу!!! Все стало нормально))
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

d1e

Народ помогите, у меня с SSI.php проблема. Я сделал что нужно, добавил новость на сайт, прописав путь к SSI и отобразив нужную строчку через echo. ну вот короче все работает норм, но иногда над текстом вылезает следующая ошибка:

"Notice: SSI.php не может загрузить сессию! Возможно это проблема связана с выходом или другими функциями - пожалуйста убедитесь что SSI.php вставлен в самом начале перед всеми другими скриптами! in /home/netotmirru/domains/netotmir.ru.temphost.info/public_html/forum/SSI.php on line 166"

в чем может быть дело? путь к SSI прописан правильно...
мне из-за этой ошибки хостер не переводит сайт на .ру !))

Roman_Grishin

во всех скриптах вставь на первой строке:
<?php require("/путь до твоего файла/SSI.php"); ?>
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

d1e

Цитата: Roman_Grishin от 14 августа 2009, 22:32:49
во всех скриптах вставь на первой строке:
<?php require("/путь до твоего файла/SSI.php"); ?>


<?php require("forum/SSI.php"); 
{
if (
$output_method != 'echo')
echo 
$context['random_news_line'];
}
?>


так правильно?
я так прописываю, но та же ошЫбка....

d1e

эта ошибка еще вылазиет не всегда.... когда как =)  crazy

Roman_Grishin

текст ошибки в студию))

и так попробуй:

<?php require("__forum/SSI.php");

if ($output_method != 'echo')
echo $context['random_news_line'];

?>

(нафик там эти {} скобки??)
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄


Roman_Grishin

Цитата: digger от 17 августа 2009, 00:29:21
Изобретатели :)
Оба не понимают что делают, но один спрашивает, а второй советует.
ну тык, на форумах всегда так)))
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄


Roman_Grishin

ну да, я это и думал написать, просто я не знаю PHP и все выражения на этом языке просто придумываю и пишу здесь)))
типа так:

random(php_code);
print php_code;

вообще, если этот код в бесконечный цикл засунуть можно через каких-то 200 лет получить рабочую CMS)))

... или упавший сервер через 10 минут
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

d1e

я кстати понял же в чом ошибка))

просто SSI надо было писать в самый верх перед всеми скриптами, а то что нужно уже { --- } куда хочешь вставлять...

Mavn

Вам об этом сказали намного раньше!
Цитата: Roman_Grishin от 14 августа 2009, 22:32:49
во всех скриптах вставь на первой строке:
<?php require("/путь до твоего файла/SSI.php"); ?>
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

Roman_Grishin

ура! значит я был прав))) Спасибо, Mavn!
Христианский форум для всех! - Видение G12 в России!
►СПАСИБО ВСЕМ УЧАСТНИКАМ ЭТОГО ФОРУМА, БЛАГОДАРЯ ВАМ У МЕНЯ ФОРУМ РАБОТАЕТ БЕЗ ПРОБЛЕМ◄

roga_i_kopita

Отцы! Помогите советом! Не могу победить кодировку. Спецом не спрашивал, боролся, как мог, вкуривал форум. Но вот уже утро наступило и мысли в голове больше не появляются.

Есть SMF2.0 RC3 весь сплошняком в UTF-8 (и база в utf8_general_ci, и русские файлы шаблона, и вообще всё).
Соответственно в исходном коде страницы мета теги с кодировкой есть: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Есть Joomla 1.5.16 тоже вся прям в UTF-8, дальше нЕкуда. И база, и файлы.
В коде страницы нужная кодировка также присутствует: <meta http-equiv="content-type" content="text/html; charset=utf-8" />
Ну дампы баз выкладывать не буду, уж поверьте на слово, там всё utf8_general_ci.

В жумле в модуле PHP кода пишу:
<?php
include '/var/www/sites/kadetclub.ru/forum/SSI.php';
ssi_recentTopics($num_recent 8$exclude_boards null$include_boards null$output_method 'echo');
?>


На морде сайта получаю:
[??????? ????] ??????????? ??????? ??????? ???????????? ????? ?? ?? от Kadet Вчера в 18:20:13
[???????] ????????? ???? ?? ??????? 2010 от ?? ????? 26 Апреля 2010, 16:58:58
[???????] ????????? ???? от ?? ????? 26 Апреля 2010, 16:58:18
[???????] ???????? ??? ???? ;) ;) ;) от ?? ????? 26 Апреля 2010, 16:56:21
[??????, ???????? ?????, ?????...] ???????? ????? ??? ??? ??????? - ????? ??????? ?? от ?? ????? 26 Апреля 2010, 16:52:29
[??????? ? ??????? ?????] ??????? ???????????????? ????? ? ?????? ? ??? от PluSh_KiLLeR 21 Апреля 2010, 20:13:09
[???????] ????????????? ??????????????? ?????????? ? ??????. ???-?????? ??????????????... от Endorfin 17 Апреля 2010, 23:54:08
[????????????????, ???????, ??????, ???????????...] ?????? ??????! от PluSh_KiLLeR 27 Февраля 2010, 17:38:33


Решил на всякий случай поиграть с функцией iconv. Нашёл тут на форуме работающий код:
<?php
include '/var/www/sites/kadetclub.ru/forum/SSI.php';
$recentTopics ssi_recentTopics('10','','array');
$out ='';
foreach(
$recentTopics as $post)
{
$out .= $post['link'];
$out .= '<BR />';
$out .= $post['poster']['link'];
$out .= ' | ';
$out .= $post['time'];
$out .= '<BR />';
}
echo 
iconv("CP1251""UTF-8//IGNORE"$out);
?>


Результат не изменился, опять каракули, но только чуть-чуть другие. Ну уж для верности эксперимента CP1251 и UTF-8 менял местами.
Каракули меняются, но остаются нечитабельными.  :)

Решил подключить файл SSI.php другого форума ну и соответственно тянуть его сообщения (он на этой же машине физически лежит). Форум тоже SMF2.0 RC3, тоже в UTF-8. С нуля установленный, муха не сидела! Никаких модификаций там не делалось. Тема поговорить там только одна - тестовая, из трёх слов.
Результат тотже: жалкие три слова - и те в каракулях.

В процессе всяческих танцев с бубном кэш форума и браузера очищал. SSI подключал и через require_once.

Правильного отображения добился только вот таким кодом:
<?php
include 'http://kadetclub.ru/forum/SSI.php?ssi_function=recentTopics';
?>


Скажите, почему такая херня с кодировкой может происходить? Когда всё сплошняком в UTF-8! Почему правильная кодировка появляется только при подключении через URL с передачей в адресной строке параметров? Так не удобно!!! Без редактирования SSI.php вывод таким образом не отфильтровать, в URL никакие значения больше не передать.  >:D
У меня уже нету больше идей.

Mr. Anviss

Для roga_i_kopita
Это происходит потому что веб сервер отдает по умолчанию в кодировке windows-1251
Для устранения данной проблемы необходимо в файле .htaccess (если такового нет - создать и положить в папку с самопальным скриптом) прописать: AddDefaultCharset UTF-8 и будет тебе счастье. Ну это правда если хостинг разрешает это делать.

Да кстати, в iconv параметр CP1251 не правильный. По правилам пишут windows-1251
Вот блин забыл сказать: ты не то куришь :)


Mr. Anviss

#43
Смотри с какими  параметрами вызывается iconv:
http://ru.wikipedia.org/wiki/Iconv
Еще вот здесь (всетаки с оф. сайта):
http://ua.php.net/manual/en/function.iconv.php#83511
Я обосновал свои слова

BIOHAZARD

это не более, чем пара примеров
в спецификации не указывается как именно должна задаваться кодировка

PS: на php.net был пример и с cp1252
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

digger®

Цитата: Mr. Anviss от 28 апреля 2010, 17:09:30
Смотри с какими  параметрами вызывается iconv:
http://ru.wikipedia.org/wiki/Iconv
Еще вот здесь (всетаки с оф. сайта):
http://ua.php.net/manual/en/function.iconv.php#83511

Iconv вызывается с параметрами кодировка1 и кодировка2. Значения параметров должны соответствовать локалям имеющимся в системе.
iconv -l показывает наличие локалей CP1251 и UTF-8
Что не правильно и где пруфлинк на обещанные правила?

Mr. Anviss

Чтобы прекратился этот срач (возможно я задел чьё-то честолюбие) и чтобы ув. digger немного успокоился и почуствовал себя гуру в php я сделаю поправку к своим словам:
Применять CP1251 или windows-1251 скорее дело вкуса и настроек php.ini

Mr. Anviss

Цитата: Mr. Anviss от 28 апреля 2010, 18:25:38
Чтобы прекратился этот срач (возможно я задел чьё-то честолюбие) и чтобы ув. digger немного успокоился и почуствовал себя гуру в php я сделаю поправку к своим словам (хотя я больше встречал применение именно windows-1251):
Применять CP1251 или windows-1251 скорее дело вкуса и настроек php.ini


Mr. Anviss

я читал вот про эти:
[iconv]
;iconv.input_encoding = ISO-8859-1
;iconv.internal_encoding = ISO-8859-1
;iconv.output_encoding = ISO-8859-1
а вообще если тебе охота "побоксировать" - то иди ты лесом... я достаточно ясно выразился?

roga_i_kopita

Цитата: Mr. Anviss от 28 апреля 2010, 09:50:15
Для roga_i_kopita
Это происходит потому что веб сервер отдает по умолчанию в кодировке windows-1251
Для устранения данной проблемы необходимо в файле .htaccess (если такового нет - создать и положить в папку с самопальным скриптом) прописать: AddDefaultCharset UTF-8 и будет тебе счастье.

Цитата: Mr. Anviss от 28 апреля 2010, 09:50:15
Ну это правда если хостинг разрешает это делать.

Конечно разрешает! Я сам себе хостинг! На VDS сижу.  :coolsmiley:

В общем закинул этот файл с таким содержимым в корень форума. Также добавил директиву и в существующий .htaccess в корне сайта Joomla. К сожалению не помогло. Так и выдаёт знаки вопросов вместо названий разделов и тем. Странно, что "от" АВТОР и "дату" отдаёт нормально, по-русски. И с директивой AddDefaultCharset UTF-8 и без неё.

Цитата: Mr. Anviss от 28 апреля 2010, 09:50:15
Да кстати, в iconv параметр CP1251 не правильный. По правилам пишут windows-1251

По правильному обозначению кодировки обратился к стандартизатору ИАНА (IANA) (__http://www.iana.org/assignments/character-sets__)
Там действительно кодировка CP1251 ни в каких случаях дажен не упоминается. Указана только windows-1251, при том указано на отсутствие синонимов к ней. Правда свежесть опубликованного перечня наборов символов - last updated 2007-05-14. Может уже изменилось чего?...  :-\
В тоже время на той же Википедии вскользь упоминается, что CP1251 всё-таки является синонимом windows-1251 (__http://ru.wikipedia.org/wiki/CP-1251__).
Получается, что CP1251- нестандартный (неформальный) синоним windows-1251, который везде втихаря используется и нормально обрабатывается.  laugh

Цитата: Mr. Anviss от 28 апреля 2010, 09:50:15
Вот блин забыл сказать: ты не то куришь :)

Да, тут ты, уважаемый, прав. Женщинами надо заниматься по ночам, а не всякую хрень вкуривать и в кодировках ковыряться.  ;D
Но проблема так и не решена. Опускаются руки. ТОЛЬКО РУКИ! Пошёл к женщине, можт вдохновит.

digger®

Цитата: Mr. Anviss от 28 апреля 2010, 20:27:01
я читал вот про эти:
[iconv]
;iconv.input_encoding = ISO-8859-1
;iconv.internal_encoding = ISO-8859-1
;iconv.output_encoding = ISO-8859-1
Этот вообще никак не связано с обсуждаемым вопросом.

Цитировать
а вообще если тебе охота "побоксировать" - то иди ты лесом... я достаточно ясно выразился?
Аргументы закончились? Обделался, так и скажи вместо перехода на оскорбления.

Mr. Anviss

Свои аргументы я высказал на 3 страницы этой темы.
Что тебе здесь не понятно?
http://www.simplemachines.ru/index.php?topic=6541.msg71739#msg71739
а если тебе так сильно хочется научить меня, а не выставить здесь себя то номер ICQ есть в моем профиле. Вот так вот. И где же оскорбления твоей великой персоны с моей стороны?

digger®

Цитата: Mr. Anviss от 28 апреля 2010, 20:36:07
Свои аргументы я высказал на 3 страницы этой темы.
Что тебе здесь не понятно?
http://www.simplemachines.ru/index.php?topic=6541.msg71739#msg71739

Хочу увидеть ПРАВИЛО, согласно которому в аргументах  iconv использовать CP1251 не правильно, а windows-1251 правильно.

Цитироватьа если тебе так сильно хочется научить меня
Тебя учить, похоже, уже поздно. Я хочу чтобы пользователи форума понимали, что то что они тут читают, вовсе не является истиной в последней инстанции.

digger®

Цитата: roga_i_kopita от 28 апреля 2010, 20:30:19
В общем закинул этот файл с таким содержимым в корень форума. Также добавил директиву и в существующий .htaccess в корне сайта Joomla. К сожалению не помогло. Так и выдаёт знаки вопросов вместо названий разделов и тем. Странно, что "от" АВТОР и "дату" отдаёт нормально, по-русски. И с директивой AddDefaultCharset UTF-8 и без неё.

Возможно поможет выставление правильной кодировки соединения с БД в SSI.php. По моему, уже обсуждалась такая проблема.
Если свой сервер и все в utf8, то можно в настройках mysql задать кодировку соединения по умолчанию.

Mr. Anviss

меня учить не поздно, а тебе просто хотелось выпендриться. почитал на счет windows-1251 и cp1251 - возможно я погарячился. они синонимы.

roga_i_kopita

Цитата: digger от 28 апреля 2010, 20:49:26
Возможно поможет выставление правильной кодировки соединения с БД в SSI.php. По моему, уже обсуждалась такая проблема.
Если свой сервер и все в utf8, то можно в настройках mysql задать кодировку соединения по умолчанию.

character set client   utf8
(Глобальное значение)   cp1251

character set connection   utf8
(Глобальное значение)   cp1251

character set database   cp1251
character set filesystem   binary
character set results   utf8
(Глобальное значение)   cp1251

character set server   cp1251
character set system   utf8
character sets dir   /usr/share/mysql/charsets/
collation connection   utf8_unicode_ci
(Глобальное значение)   cp1251_general_ci

collation database   cp1251_general_ci
collation server   cp1251_general_ci

Это мои серверные переменные и настройки, которые выведены из phpMyAdmin.
Несовпадение некоторых значений с глобальными меня сильно смущает.
Правильно ли я понимаю, что испытываю указанную ранее проблему именно из-за таких значений?
И правильно ли я предполагаю, что для исправления всего этого дела мне также придётся перекодировать все мои базы (15 штук) сначала в latin1 (чтобы "снять маску кодировки с битов данных") а затем, принудительно указав, в какой кодировке буду запихивать данные обратно в базу, снова всё заливать в UTF-8?
ЦитироватьНадобно сделать:
mysqldump –default-character-set=latin1 > file.sql
Теперь в файле лежат байтики «как было в БД», то бишь правильно.
Создаем базу с utf8 (или 1251), в file.sql добавляем SET NAMES cp1251 (говорим, что кормить щас будем 1251 данные), везде где создаются таблицы latin1 меняем на cp1251 (если база в utf8, то на utf8). Запускаем, получаем правильную базу (если приконнектиться НЕ как latin1, конечно).
Далее в /etc/my.cnf:
[mysqld]
init-connect='SET NAMES cp1251′ (либо при каждом коннекте говорить то же самое ручками).
и все будет работать замечательно, проверено и для utf8 тоже.

Начитался в инете и на форумах всего, теперь каша в голове.
Вообще много всего всплывает из-за мелких каких-то неприятностей. Чем дальше в лес, тем толще партизаны.

Что получается? Даже если я создаю в phpMyAdmin пустую базу со сравнением utf8_general_ci и делаю к ней запросы без явного указания кодировки, то все данные записываются в неё всё равно в какой-то иной кодировке? Которая задана глобальными переменными? Типа у меня character set database  cp1251, значит и все данные в каждой новой базе всё равно в cp1251, хоть и указываю другое сравнение?

А какая зависимость тогда между сайтом, файлы которого в utf-8, форумом в utf-8, базами в utf8_general_ci и установкой соединения с каждой базой (character set connection - utf8, (Глобальное значение) - cp1251)?

Если возможно более-менее коротко и доходчиво объяснить, будте добры! Новичкам на форуме понимание этих вещей, наверное, очень бы помогло. Занесли бы в ФАК потом. А?  idiot

digger®

Цитировать
Если возможно более-менее коротко и доходчиво объяснить, будте добры! Новичкам на форуме понимание этих вещей, наверное, очень бы помогло. Занесли бы в ФАК потом. А?  idiot

в my.cnf в секцию [mysqld]
добавьте (или замените, если там эти строки с другими кодировками)

default-character-set=utf8
init_connect='SET NAMES utf8'

и перезапустите mysql

Mavn

кстати говоря вполне возможно что в SSI.php не выставлена глобальная переменная указывающая кодировку как результат данные отдаются не так как нужно. Уже кстати была похожая проблема год или два назад и решилась дописыванием в глобал переменной.

и господа прекращайте срачь. хотите выяснить истину то хотя бы нормальным тоном это делайте!!
SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

roga_i_kopita

Цитата: digger от 28 апреля 2010, 22:54:46
в my.cnf в секцию [mysqld]
добавьте (или замените, если там эти строки с другими кодировками)

default-character-set=utf8
init_connect='SET NAMES utf8'

и перезапустите mysql

Вот это помогло. Наконец-то! Доволен, как слон!!!  O0 Убил на это дело в общей сложности три дня.
Пресвятому отцу администрирования digger'у респект и уважуха! Внёс вклад в Вашу карму.

В общем, воспользовавшись этим советом , а также почитав некоторую мукулатуру в инете привёл свой файл /etc/my.cnf вот к такому виду:

[mysqld]
bind-address=127.0.0.1
datadir = /var/lib/mysql
socket = /var/lib/mysql/mysql.sock
user=mysql
character_set_server=utf8
default-character-set = utf8
init_connect='SET NAMES utf8'

[client]
default-character-set=utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


Цитата: Mavn от 29 апреля 2010, 09:24:46
кстати говоря вполне возможно что в SSI.php не выставлена глобальная переменная указывающая кодировку как результат данные отдаются не так как нужно. Уже кстати была похожая проблема год или два назад и решилась дописыванием в глобал переменной.

Решение Mavn'а не применял, т.к. было желание решить проблему на серверном уровне, чтобы будущие установки новых сайтов и форумов не требовали решать проблемы с кодировками каждый раз с каждым новым SMF. Да и банально уже не хватило терпения искать в материалах двухгодичной давности, как называется эта глобальная переменная и как правильно её вставить в SSI.php.