setlocale на WAMP + UTF8? Topic is solved

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
Sonya

setlocale на WAMP + UTF8?

Post by Sonya »

На сервере стоит Linux и все работает так

Code: Select all

setlocale(LC_ALL,'ru_RU.UTF8');
На WAMP соответственно игнорируется, поэтому ставлю

Code: Select all

setlocale(LC_ALL,'russian');
Но вывод дат идет в кодировке win1251, а сайт на utf8, поэтому все ромбиками. Можно ли научить WAMP разговаривать по-русски и на UTF8 с помощью setlocale? Я знаю что можно iconv подставлять непосредственно перед выводом, но мне это не подходит, так как скриптов очень много.

PS Предложение "выбросить windows" не принимается :)
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: setlocale на WAMP + UTF8?

Post by Il_Burbero »

По моему проще сменить шаблон вывода даты (не выводить названия, напр. 04.05.06), чем учить Виндоус
Информация о локали применяется к процессу, на не к потоку. В результате, если PHP запущен на многопоточном сервере (IIS или Apache под Windows), то локаль в вашем скрипте может измениться, даже если вы не вызывали сами setlocale. Это происходит из-за того, что другой скрипт из другого потока этого же процесса меняет локаль с помощью setlocale.
корректно работать с setlocale. У меня не получилось. Хотя согласно всем докам под Виндоус это делается так setlocale(LC_ALL, 'ru_RU') (я пробовал $config['locale'] ="LC_ALL, 'ru_RU'";)
, но вероятно идет переопределение (см. цитату выше) в самом сервере, вернее в задействованных ехешниках и связанных с ними обработчиках Виндоус.
На  http://msdn.microsoft.com/en-us/library/x99tb11d.aspx говорится что можно тупо добавить точку и кодировку, но у меня не сработало на Денвере.
Виндоус просто не любит сторонние сервера, как собственно и все стороннее ПО затрагивающее конфигурацию самой ОС.
Можно наверное еще что то отсюда почерпнуть http://webscript.ru/stories/63 но увы я слаб в перле. По идее перл скрипты можно стартовать на уровне настроечных файлов (в Денвере например Апач стартует через (или вместе с) перл скриптами).
Ниже пишу код отладки и теста кодировки на сервере:

Code: Select all

<?php
$locale= "Russian"; //здесь пишем локаль которую хотим проверить...
$a = setlocale(LC_ALL, $locale);
if ($a!==false) echo "Локаль  <b>$a</b> успешно установлена!";
else echo "Локаль <b>$locale</b> не может быть установлена";
?>
У меня выдает "Текущая локаль Russian_Russia.1251 успешно установлена!", при попытке задать вышеописанные способы идет жесткий отказ.
User avatar
vatokato
Forum Members
Forum Members
Posts: 40
Joined: Mon Dec 24, 2007 10:20 am

Re: setlocale на WAMP + UTF8?

Post by vatokato »

)) а я ваще прям в пыхе сделал замену на русские слова тупо и все нормик)
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: setlocale на WAMP + UTF8?

Post by ZYV »

Я могу ошибаться, однако почему-то мне кажется, что в Windows просто нет аналогичного Linux понятия о локалях, так что функция setlocale будет вести себя совершенно непредсказуемо.

Региональные настройки (значок с глобусом в контрольной панели) вряд ли можно менять на уровне процессов, а не всей системы. Кроме того, с NT4 насколько я знаю, большинство MBCS-версий функций возвращают строки в Unicode, а НЕ MBCS - в текущей кодировке для non-unicode applications. Т.е. перекодировать полюбому надо. Так что чего там получает PHP - это зависит от конкретного Windows-билда PHP и Apache.

Так что либо iconv, либо правка исходников PHP... В общем дохлый это номер, лучше поставить Linux, если не на этот компьютер, то на второй (ну или Mac Mini купи - будет себе сервером на полке, много места не занимает как раз) и Windows использовать только как клиент, если уж так хочется на нем работать (хотя это попахивает извращениями).
unsigned double ZYV;
Sonya

Re: setlocale на WAMP + UTF8?

Post by Sonya »

Il_Burbero wrote: По моему проще сменить шаблон вывода даты (не выводить названия, напр. 04.05.06), чем учить Виндоус
Душа букАв просит :)
Il_Burbero wrote:
Информация о локали применяется к процессу, на не к потоку. В результате, если PHP запущен на многопоточном сервере (IIS или Apache под Windows), то локаль в вашем скрипте может измениться, даже если вы не вызывали сами setlocale. Это происходит из-за того, что другой скрипт из другого потока этого же процесса меняет локаль с помощью setlocale.
Исключено, я тут одна на сервере разрабатываю, поэтому поток один (должен быть, по идее :))
Il_Burbero wrote: Виндоус просто не любит сторонние сервера, как собственно и все стороннее ПО затрагивающее конфигурацию самой ОС.
Вообщем-то ничего другого и не ожидала :) Но хотелось сказки.
Sonya

Re: setlocale на WAMP + UTF8?

Post by Sonya »

vatokato wrote: )) а я ваще прям в пыхе сделал замену на русские слова тупо и все нормик)
что такое пых?  ??? (http://yandex.ru/yandsearch?text=%22%D1 ... 1%85%3F%22)
аааааа  ;D ну это все равно, что iconv подставлять перед выводом  :-\
Last edited by Sonya on Wed May 21, 2008 1:29 pm, edited 1 time in total.
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: setlocale на WAMP + UTF8?

Post by Il_Burbero »

ZYV wrote: Так что либо iconv, либо правка исходников PHP... В общем дохлый это номер, лучше поставить Linux, если не на этот компьютер, то на второй (ну или Mac Mini купи - будет себе сервером на полке, много места не занимает как раз) и Windows использовать только как клиент, если уж так хочется на нем работать (хотя это попахивает извращениями).
Насколько я понял понятие локали в Виндоус работает на уровне Net Framework. Может ктото и сподобится скрестить его с Апачей и ПХП, но это врядли. Насколько я понимаю виндоус выбирает локаль при загрузке и ессно поменяв локаль в системе будь любезен перезагрузись:).

На Винде удобно мастерить сайт, в плане дизайна, верстки и набивки контентом, отладки кроссбраузерности, яваскриптов и т.п. Опять же таскать его и показывать всем (все можно закатать на флэш). Само собой нужно тут же думать как поведет себя контент при переносе на хост и юникс сервер, т.е. просто не делать то что потом может проблемно работать под никсами.
Держать же сайт=сервак на Винде можно конечно, но это опасно если вы не используете Виндоус схемы для сервера т.е. IIS и asp вместо Апача и ПХП (ну типа того).
Каждый серверный язык рассчитан на определенный сервер и соответственно ОС сервера. Апач и ПХП изначально шел под никсы ибо все это выросло из Перла и CGI а Виндоус не имеет понятия об этих языках, он вырос вообще непонятно из чего :)))
Кстати на Виндоус даже есть КМС (скорее пакет сервер+КМС) Share Point, посмотрите http://office.microsoft.com/ru-ru/share ... 31049.aspx вот родное для виндоус. А ПХП он не знает. Это его научили умельцы :))
Sonya

Re: setlocale на WAMP + UTF8?

Post by Sonya »

ZYV wrote: Так что либо iconv, либо правка исходников PHP... В общем дохлый это номер, лучше поставить Linux, если не на этот компьютер, то на второй (ну или Mac Mini купи - будет себе сервером на полке, много места не занимает как раз) и Windows использовать только как клиент, если уж так хочется на нем работать (хотя это попахивает извращениями).
По поводу Линукса у меня психологическая травма.

1. Когда-то, в страшные девяностые я пыталась установить RedHat на свой 386 или 486. Я промучилась две недели подгружая драйвера для материнской платы, графической и сетевой карты, при этом у меня постоянно падал драйвер для клавиатуры, то подгружался, то нет. Через две недели для меня это начало "попахивать извращениями" :) и я за час-два на той же машине установила windows
2. В начале 21 века :) я открыла для себя cygwin. В нем постоянно чего-то не хватало, он все время ругался и его вывод все равно отличался от вывода на Linux, а мне хотелось максимальный клон провайдера.
3. Года три назад я игралась c Virtual Server на Powerbook. И опять что-то там не пошло, не поехало, не сработалось, видимо, я просто несовместима с Linux.
4. Сейчас у меня дома стоит пентиум, который ждет установки Debian. И как только я наберусь смелости и много-много времени, я сразу же займусь его установкой. Как только.... А до тех пор буду "извращаться" на Windows, подразумевая правильный вывод после переноса на Linux.
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: setlocale на WAMP + UTF8?

Post by ZYV »

По поводу (4) - слушай, ну надо всё-таки зайти к тебе и поставить/настроить RHEL за пару часов. Сейчас многое изменилось... Ладно, я позже прокомментирую более развернуто, сейчас убегаю на поезд в Мск.
unsigned double ZYV;
Sonya

Re: setlocale на WAMP + UTF8?

Post by Sonya »

ZYV wrote: По поводу (4) - слушай, ну надо всё-таки зайти к тебе и поставить/настроить RHEL за пару часов.
Цены тебе не будет. Пиво за мной :) Только у провайдера на сервере Debian стоит, поэтому я на него настроилась. С другой стороны у RHEL шапочка-логотип очень уж красивый и на задницу моего авто уже давно из-за своей красоты налеплен :)

На уровне пользователя мне знаний линукса хватает, но установить и настроить так, чтобы не мучиться ежедневно - не дано :)
User avatar
Il_Burbero
Forum Members
Forum Members
Posts: 128
Joined: Tue Apr 15, 2008 10:36 am

Re: setlocale на WAMP + UTF8?

Post by Il_Burbero »

По поводу Линукса у меня психологическая травма.
1. Когда-то, в страшные девяностые я пыталась установить RedHat на свой 386 или 486. Я промучилась две недели подгружая драйвера для материнской платы, графической и сетевой карты, при этом у меня постоянно падал драйвер для клавиатуры, то подгружался, то нет. Через две недели для меня это начало "попахивать извращениями"  и я за час-два на той же машине установила windows
Аналогичная ситуация :), причем тоже на Шапке. Но с тех пор установка никса действительно весьма значительно упростилась, это факт. Главное появилось много внятных доков без никсоидного пафоса.

А еще есть фишка VMware как на никсы так и на винду. Это эмулятор ПК, сетей ПК. Мощная вещь. Можно эмулировать как один ПК так и Сеть ПК. Инсталлять разные ОСи ковырятся и выбирать что по душе.
Кстати эту фишку можно рассмотреть как вариант сосуществования двух ОС в одной (т.е. без установки раздельно двух ОС), некоторые умельцы (слышал, не видел) ставят Винду, на нее VMware, в нем ставят и настраивают никс и вся эта ботва работает как Никсовый веб-сервер (приходящему на сетевую сигналу пофиг кто его ждет Виндоус или никс или вообще Дос, а в этой схеме сигнал тупо передается на эмуль). Правда ресурсы (что ессно) жрет как Ктулху, но если не задействовать сервак одновременно играя в Quake 3 то потянет).
Sonya

Re: setlocale на WAMP + UTF8?

Post by Sonya »

Il_Burbero wrote: А еще есть фишка VMware как на никсы так и на винду.
Работала и с этой фишкой. Но опять-таки не сложилось. Проблема не в обслуживании, как пользователя, а именно в разумной установке и настройке, чтобы все работало, как у провайдера. А я после голой загрузки обычно впадаю в ступор по поводу дальнейших шагов. Как настроить apache, mysql, sendmail и тому подобное, чтобы не плеваться и брызгаться пеной впоследствии?  ::)
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: setlocale на WAMP + UTF8?

Post by ZYV »

Ну, сейчас у RH уже почти всё из коробки работает - Apache, Sendmail, mySQL, vsftpd - надо только знать где лежат конфиги и папки по умолчанию, а также иметь некий навык по управлению сервисами. В принципе эта информация есть в документации, но, конечно, при нулевых входных данных это задача не простая.

В общем всё это фигня, в конце месяца, как приеду, постараюсь ответить на ПМ.
unsigned double ZYV;
Post Reply

Return to “Russian - русский”