Page 1 of 1
setlocale на WAMP + UTF8?
Posted: Tue May 20, 2008 4:51 pm
by Sonya
На сервере стоит Linux и все работает так
На WAMP соответственно игнорируется, поэтому ставлю
Но вывод дат идет в кодировке win1251, а сайт на utf8, поэтому все ромбиками. Можно ли научить WAMP разговаривать по-русски и на UTF8 с помощью setlocale? Я знаю что можно iconv подставлять непосредственно перед выводом, но мне это не подходит, так как скриптов очень много.
PS Предложение "выбросить windows" не принимается

Re: setlocale на WAMP + UTF8?
Posted: Wed May 21, 2008 9:08 am
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 успешно установлена!", при попытке задать вышеописанные способы идет жесткий отказ.
Re: setlocale на WAMP + UTF8?
Posted: Wed May 21, 2008 9:31 am
by vatokato
)) а я ваще прям в пыхе сделал замену на русские слова тупо и все нормик)
Re: setlocale на WAMP + UTF8?
Posted: Wed May 21, 2008 11:44 am
by ZYV
Я могу ошибаться, однако почему-то мне кажется, что в Windows просто нет аналогичного Linux понятия о локалях, так что функция setlocale будет вести себя совершенно непредсказуемо.
Региональные настройки (значок с глобусом в контрольной панели) вряд ли можно менять на уровне процессов, а не всей системы. Кроме того, с NT4 насколько я знаю, большинство MBCS-версий функций возвращают строки в Unicode, а НЕ MBCS - в текущей кодировке для non-unicode applications. Т.е. перекодировать полюбому надо. Так что чего там получает PHP - это зависит от конкретного Windows-билда PHP и Apache.
Так что либо iconv, либо правка исходников PHP... В общем дохлый это номер, лучше поставить Linux, если не на этот компьютер, то на второй (ну или Mac Mini купи - будет себе сервером на полке, много места не занимает как раз) и Windows использовать только как клиент, если уж так хочется на нем работать (хотя это попахивает извращениями).
Re: setlocale на WAMP + UTF8?
Posted: Wed May 21, 2008 1:25 pm
by Sonya
Il_Burbero wrote:
По моему проще сменить шаблон вывода даты (не выводить названия, напр. 04.05.06), чем учить Виндоус
Душа букАв просит
Il_Burbero wrote:
Информация о локали применяется к процессу, на не к потоку. В результате, если PHP запущен на многопоточном сервере (IIS или Apache под Windows), то локаль в вашем скрипте может измениться, даже если вы не вызывали сами setlocale. Это происходит из-за того, что другой скрипт из другого потока этого же процесса меняет локаль с помощью setlocale.
Исключено, я тут одна на сервере разрабатываю, поэтому поток один (должен быть, по идее

)
Il_Burbero wrote:
Виндоус просто не любит сторонние сервера, как собственно и все стороннее ПО затрагивающее конфигурацию самой ОС.
Вообщем-то ничего другого и не ожидала

Но хотелось сказки.
Re: setlocale на WAMP + UTF8?
Posted: Wed May 21, 2008 1:27 pm
by Sonya
vatokato wrote:
)) а я ваще прям в пыхе сделал замену на русские слова тупо и все нормик)
что такое пых?

(
http://yandex.ru/yandsearch?text=%22%D1 ... 1%85%3F%22)
аааааа

ну это все равно, что iconv подставлять перед выводом

Re: setlocale на WAMP + UTF8?
Posted: Wed May 21, 2008 1:38 pm
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 вот родное для виндоус. А ПХП он не знает. Это его научили умельцы

)
Re: setlocale на WAMP + UTF8?
Posted: Wed May 21, 2008 1:48 pm
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.
Re: setlocale на WAMP + UTF8?
Posted: Wed May 21, 2008 5:35 pm
by ZYV
По поводу (4) - слушай, ну надо всё-таки зайти к тебе и поставить/настроить RHEL за пару часов. Сейчас многое изменилось... Ладно, я позже прокомментирую более развернуто, сейчас убегаю на поезд в Мск.
Re: setlocale на WAMP + UTF8?
Posted: Wed May 21, 2008 5:42 pm
by Sonya
ZYV wrote:
По поводу (4) - слушай, ну надо всё-таки зайти к тебе и поставить/настроить RHEL за пару часов.
Цены тебе не будет. Пиво за мной

Только у провайдера на сервере Debian стоит, поэтому я на него настроилась. С другой стороны у RHEL шапочка-логотип очень уж красивый и на задницу моего авто уже давно из-за своей красоты налеплен
На уровне пользователя мне знаний линукса хватает, но установить и настроить так, чтобы не мучиться ежедневно - не дано

Re: setlocale на WAMP + UTF8?
Posted: Wed May 21, 2008 6:23 pm
by Il_Burbero
По поводу Линукса у меня психологическая травма.
1. Когда-то, в страшные девяностые я пыталась установить RedHat на свой 386 или 486. Я промучилась две недели подгружая драйвера для материнской платы, графической и сетевой карты, при этом у меня постоянно падал драйвер для клавиатуры, то подгружался, то нет. Через две недели для меня это начало "попахивать извращениями" и я за час-два на той же машине установила windows
Аналогичная ситуация

, причем тоже на Шапке. Но с тех пор установка никса действительно весьма значительно упростилась, это факт. Главное появилось много внятных доков без никсоидного пафоса.
А еще есть фишка VMware как на никсы так и на винду. Это эмулятор ПК, сетей ПК. Мощная вещь. Можно эмулировать как один ПК так и Сеть ПК. Инсталлять разные ОСи ковырятся и выбирать что по душе.
Кстати эту фишку можно рассмотреть как вариант сосуществования двух ОС в одной (т.е. без установки раздельно двух ОС), некоторые умельцы (слышал, не видел) ставят Винду, на нее VMware, в нем ставят и настраивают никс и вся эта ботва работает как Никсовый веб-сервер (приходящему на сетевую сигналу пофиг кто его ждет Виндоус или никс или вообще Дос, а в этой схеме сигнал тупо передается на эмуль). Правда ресурсы (что ессно) жрет как Ктулху, но если не задействовать сервак одновременно играя в Quake 3 то потянет).
Re: setlocale на WAMP + UTF8?
Posted: Mon Jun 02, 2008 8:52 am
by Sonya
Il_Burbero wrote:
А еще есть фишка VMware как на никсы так и на винду.
Работала и с этой фишкой. Но опять-таки не сложилось. Проблема не в обслуживании, как пользователя, а именно в разумной установке и настройке, чтобы все работало, как у провайдера. А я после голой загрузки обычно впадаю в ступор по поводу дальнейших шагов. Как настроить apache, mysql, sendmail и тому подобное, чтобы не плеваться и брызгаться пеной впоследствии?

Re: setlocale на WAMP + UTF8?
Posted: Fri Jun 06, 2008 10:12 am
by ZYV
Ну, сейчас у RH уже почти всё из коробки работает - Apache, Sendmail, mySQL, vsftpd - надо только знать где лежат конфиги и папки по умолчанию, а также иметь некий навык по управлению сервисами. В принципе эта информация есть в документации, но, конечно, при нулевых входных данных это задача не простая.
В общем всё это фигня, в конце месяца, как приеду, постараюсь ответить на ПМ.