Форум сетевых администраторов
Показаны 21 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- setlocale (http://netadmin.ws/forum/showthread.php?threadid=1564)


Помещено ExcErr 09-06-2002 в 10:24:

setlocale

Как вызвать субж, чтоб работал для всего скрипта?

На перловке с этим проблем нет, а вот на ПХП, ну как не крутил, не выходит глиняный цветок

ХЕЛП!!!!

__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg


Помещено devels 10-06-2002 в 16:15:

Наверное в начале прописать
setlocale (LC_ALL, 'ru_RU');
?????


Помещено ExcErr 10-06-2002 в 16:30:

devels
Ð_то ясный перец, но в том то и дело, что так и не пашет, по какой-то причине
Голову ломаю уже какие сутки

__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg


Помещено devels 10-06-2002 в 17:11:

Да вот тупо взял и скопировал из мануала

<?php
setlocale (LC_ALL, '');
echo strftime ("%A %e %B %Y", mktime (0, 0, 0, 12, 22, 1978));
?>
Выход : пятница Декабрь 1978

Только там приписочка -- если типа хотите чтобы брались настройки пользователя, не указывайте кодировки в переменных функции setlocale.
If locale is the empty string "", the locale names will be set from the values of environment variables with the same names as the above categories, or from "LANG".

Принудительно можно указывать
<?php
setlocale (LC_ALL, 'RU');
echo strftime ("%A %e %B %Y", mktime (0, 0, 0, 12, 22, 1978));
?>


Помещено ExcErr 10-06-2002 в 17:21:

devels
Хех, незнаю, но у меня почему-то не катит. По манам и делал эту фигню...
Мне просто поиск нужно сделать, но чтоб еще и кирилицу понимал... Так вот и маюсь

__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg


Помещено devels 10-06-2002 в 17:42:

Поиск в базе или поиск в файлах??
Тут может быть проблема с соответствием кодировок локали, webсервера и локали базы данных. Или вариант: кодировок локали, webсервера и локали файла/shell`а


Помещено ExcErr 10-06-2002 в 17:59:

да и так и так пытался..
мне бы eregi приучить к тому, чтоб он знал, что есть кирилическая буква маленькая, а есть и большая....

__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg


Помещено devels 10-06-2002 в 18:13:

PHP Manual:
eregi -- case insensitive regular expression match

Так используй ereg


Помещено ExcErr 10-06-2002 в 18:21:

devels
так ты сам написал и сам советуешь не то...
мне нужно чтоб не зависимо от регистра искало
к примеру
если при ereg я буду искать букву "А", то он будет искать только "А", а при eregi он ищет (в англ. тока раскладке) и "А" и "а".
Вот в чем фитча то.

__________________
Жизнь как минное поле, не знаешь где нарвешься...
http://www.danasoft.com/sig/ExcErr2.jpg


Помещено polo 10-06-2002 в 20:09:

сколько не пытался я использовать эту локаль блин, реально работает только у меня на машине, то ли имена этих локалей разные то ли не знаю...

__________________
Всегда есть решение.


Помещено [si] 10-06-2002 в 21:16:

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

locale -a

Даст список доступных в системе локале, у меня например есть такие:
ru_RU
ru_RU.CP1251
ru_RU.KOI8R
ru_RU.cp1251
ru_RU.koi8r
ru_RU.utf8

причет CP1251я делал сам

подрбности

man locale
man localedef


Помещено polo 10-06-2002 в 21:31:

мне к примеру выдает
ru_RU
ru_RU.koi8r
ru_RU.utf8
russian
ru_UA
ru_UA.utf8
думаю russian & ru_RU под 1251.

__________________
Всегда есть решение.


Помещено [si] 11-06-2002 в 07:47:

Скорее это koi8


Помещено devels 11-06-2002 в 09:32:

quote:
да и так и так пытался..
мне бы eregi приучить к тому, чтоб он знал, что есть кирилическая буква маленькая, а есть и большая....

Может я что не понимаю, ты сам сказал что нужно отличие больших и малых, тогда ereg.

По поводу поиска в файлах

У меня в системе например такая вот ботва:

[.....................]$ locale -a|grep ru_
ru_RU
ru_RU.koi8r
ru_RU.utf8
ru_UA
ru_UA.utf8
[.....................]$ locale
LANG=ru_RU.KOI8-R
LC_CTYPE="ru_RU.KOI8-R"
LC_NUMERIC="ru_RU.KOI8-R"
LC_TIME="ru_RU.KOI8-R"
LC_COLLATE="ru_RU.KOI8-R"
LC_MONETARY="ru_RU.KOI8-R"
LC_MESSAGES="ru_RU.KOI8-R"
LC_PAPER="ru_RU.KOI8-R"
LC_NAME="ru_RU.KOI8-R"
LC_ADDRESS="ru_RU.KOI8-R"
LC_TELEPHONE="ru_RU.KOI8-R"
LC_MEASUREMENT="ru_RU.KOI8-R"
LC_IDENTIFICATION="ru_RU.KOI8-R"

Проверим все это методом научного тыка
Берем файл с заведомо koi8-r начинкой.
proba.php (взято из мануала)
<?
setlocale (LC_ALL, 'ru_RU.koi8-r');

$filename = "./proba.txt";
$fd = fopen ($filename, "r");
$string = fread ($fd, filesize ($filename));
fclose ($fd);

if (eregi("а", $string))
{ echo "'$string' contains a 'а' or 'А'!";
} else
{ echo "not contains;";
}
?>
Выводит все правильно!!!

А в файле с кодировкой win-1251 мы жестоко обломаемся :-(
russian и ru_RU не подходят
Как было видно, у меня нет ru_RU.cp1251, так что с этой кодировкой я не пробовал.

Вот такие пирожки с котятами.


Помещено polo 11-06-2002 в 13:04:

не понятно почему так происходит, 1251 на много популярнее теперь чем кой.

__________________
Всегда есть решение.


Помещено devels 11-06-2002 в 13:12:

quote:

polo
популярнее


Не согласен, это windows популярнее, а в unix изначально koi8 было, потом для удобства (linux скоро станет как windows) добавили cp1251.
Но, конечно, человеку, сидящену на ftp закачке файлов из windows намного удобнее иметь на сервере cp1251 и не мучаться с перекодировкой


Помещено polo 11-06-2002 в 13:21:

оно та так, но вот линукс в основном используется для интернет серверверов, а я считаю что использовать кой8 на сайтах это извращенство.

__________________
Всегда есть решение.


Помещено devels 11-06-2002 в 15:13:

Мне кажется ты судишь как пользователь windows, да и кто мешает поставить локаль на сервер?
На более или менее нормальных хостерских серваках стоит нужная локаль, я вот как-то раз ставил арабский linux.....


Помещено [si] 11-06-2002 в 16:59:

quote:
не понятно почему так происходит, 1251 на много популярнее теперь чем кой


Для *nix систем родная кодировка koi8, а не cp1251 она же win1251.


Помещено GSP 23-08-2002 в 00:39:

Нашел больную тему!
У меня на хосте есть только:
ru_RU
ru_RU.koi8r
ru_RU.utf8
russian
ru_UA
ru_UA.utf8
Как и говорили в предыдущих сообщениях. Такой вопрос: можно ли где качнуть апдейт какой-то или что-то в этом роде, чтобы добавить 1251? Может кто знает?

__________________
WebHostingForum.ru


Помещено GSP 23-08-2002 в 12:40:

Проблема решена!

Итак, если у вас есть доступ к серверу вы делаете:
# locale -a | grep ru
Если у вас там будет ru_RU.CP1251 то делать нечего, открываете пиво и наслаждаетесь жизнью, если же нет этой кодировки то тогда:
# localedef -c -i ru_RU -f CP1251 ru_RU.CP1251
Потом идите в /usr/lib/share или /usr/lib/locale у кого как... Если там появился ru_RU.cp1251 переименуйте его в ru_RU.CP1251..
Все!

Теперь снова проверьте есть ли он у Вас в системе!
# locale -a | grep ru

Спасибо за внимание

__________________
WebHostingForum.ru


Формат времени GMT. Текущее время 00:21.
Показаны 21 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.