Автор Тема: lc в перле всё-таки Заведётся?  (Прочитано 3849 раз)

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

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
lc в перле всё-таки Заведётся?
« : 31 Декабря 2001, 04:17:58 »
Даров, перланутые. Русифицируя недавно YaBB SP 1 (Форум), я встретился с одной траблой: В \'Поиске\' имеютя чувтвительности к регистру (а точнее, "lc" и етс..).
Это есть бэд.
Я вырезал из pvd-lib перекодировщик БуКвЫ->буковки (через хексы), но это фигово, т.к. Результат отображается маленнькими буквами. Переделка их в большие у меня выросло в большую функцию, которую я даже стесняюсь выкладывать в архив с русификатором доски. Покапав ФАК, я нашёл, что по теме мне должон помочь локаль (locale), Я почитал рекомендации и понял лишь наполовину. Никто не подкинет
решений, близких к готовым? Просто у меня щас линукс не работает (случайно удалил директорию /dev :-)) => Локалей нет.
Да ещё на сервак доступ перекрыт в данный момент.
Вообщем, знатокам есть над чем задуматься.
Вот листинг локалей сервака:
ls /usr/lib/locale

af_ZA
ar_AE
ar_AE.utf8
ar_BH
ar_BH.utf8
ar_DZ
ar_DZ.utf8
ar_EG
ar_EG.utf8
ar_IN
ar_IQ
ar_IQ.utf8
ar_JO
ar_JO.utf8
ar_KW
ar_KW.utf8
ar_LB
ar_LB.utf8
ar_LY
ar_LY.utf8
ar_MA
ar_MA.utf8
ar_OM
ar_OM.utf8
ar_QA
ar_QA.utf8
ar_SA
ar_SA.utf8
ar_SD
ar_SD.utf8
ar_SY
ar_SY.utf8
ar_TN
ar_TN.utf8
ar_YE
ar_YE.utf8
be_BY
be_BY.utf8
bg_BG
bg_BG.utf8
ca_ES
ca_ES.utf8
ca_ES.utf8@euro
ca_ES@euro
cs_CZ
cs_CZ.utf8
da_DK
da_DK.utf8
de_AT
de_AT.utf8
de_AT.utf8@euro
de_AT@euro
de_BE
de_BE.utf8
de_BE.utf8@euro
de_BE@euro
de_CH
de_CH.utf8
de_DE
de_DE.utf8
de_DE.utf8@euro
de_DE@euro
de_LU
de_LU.utf8
de_LU.utf8@euro
de_LU@euro
el_GR
el_GR.utf8
en_AU
en_AU.utf8
en_BW
en_BW.utf8
en_CA
en_CA.utf8
en_DK
en_DK.utf8
en_GB
en_GB.utf8
en_HK
en_HK.utf8
en_IE
en_IE.utf8
en_IE.utf8@euro
en_IE@euro
en_IN
en_NZ
en_NZ.utf8
en_PH
en_PH.utf8
en_SG
en_SG.utf8
en_US
en_US.utf8
en_ZA
en_ZA.utf8
en_ZW
en_ZW.utf8
es_AR
es_AR.utf8
es_BO
es_BO.utf8
es_CL
es_CL.utf8
es_CO
es_CO.utf8
es_CR
es_CR.utf8
es_DO
es_DO.utf8
es_EC
es_EC.utf8
es_ES
es_ES.utf8
es_ES.utf8@euro
es_ES@euro
es_GT
es_GT.utf8
es_HN
es_HN.utf8
es_MX
es_MX.utf8
es_NI
es_NI.utf8
es_PA
es_PA.utf8
es_PE
es_PE.utf8
es_PR
es_PR.utf8
es_PY
es_PY.utf8
es_SV
es_SV.utf8
es_US
es_US.utf8
es_UY
es_UY.utf8
es_VE
es_VE.utf8
et_EE
et_EE.utf8
eu_ES
eu_ES.utf8
eu_ES.utf8@euro
eu_ES@euro
fa_IR
fi_FI
fi_FI.utf8
fi_FI.utf8@euro
fi_FI@euro
fo_FO
fo_FO.utf8
fr_BE
fr_BE.utf8
fr_BE.utf8@euro
fr_BE@euro
fr_CA
fr_CA.utf8
fr_CH
fr_CH.utf8
fr_FR
fr_FR.utf8
fr_FR.utf8@euro
fr_FR@euro
fr_LU
fr_LU.utf8
fr_LU.utf8@euro
fr_LU@euro
ga_IE
ga_IE.utf8
ga_IE.utf8@euro
ga_IE@euro
gl_ES
gl_ES.utf8
gl_ES.utf8@euro
gl_ES@euro
gv_GB
gv_GB.utf8
he_IL
he_IL.utf8
hi_IN
hr_HR
hr_HR.utf8
hu_HU
hu_HU.utf8
id_ID
id_ID.utf8
is_IS
is_IS.utf8
it_CH
it_CH.utf8
it_IT
it_IT.utf8
it_IT.utf8@euro
it_IT@euro
iw_IL
iw_IL.utf8
ja_JP.eucjp
ja_JP.eucjputf8
kl_GL
kl_GL.utf8
ko_KR.euckr
ko_KR.utf8
kw_GB
kw_GB.utf8
lt_LT
lt_LT.utf8
lv_LV
lv_LV.utf8
mk_MK
mk_MK.utf8
mr_IN
ms_MY
ms_MY.utf8
mt_MT
mt_MT.utf8
nl_BE
nl_BE.utf8
nl_BE.utf8@euro
nl_BE@euro
nl_NL
nl_NL.utf8
nl_NL.utf8@euro
nl_NL@euro
nn_NO
nn_NO.utf8
no_NO
no_NO.utf8
pl_PL
pl_PL.utf8
pt_BR
pt_BR.utf8
pt_PT
pt_PT.utf8
pt_PT.utf8@euro
pt_PT@euro
ro_RO
ro_RO.utf8
ru_RU
ru_RU.koi8r
ru_RU.utf8
ru_UA
ru_UA.utf8
sk_SK
sk_SK.utf8
sl_SI
sl_SI.utf8
sq_AL
sq_AL.utf8
sr_YU
sr_YU.utf8
sr_YU.utf8@cyrillic
sr_YU@cyrillic
sv_FI
sv_FI.utf8
sv_FI.utf8@euro
sv_FI@euro
sv_SE
sv_SE.utf8
ta_IN
te_IN
th_TH
th_TH.utf8
tr_TR
tr_TR.utf8
uk_UA
uk_UA.utf8
vi_VN
zh_CN
zh_CN.gb18030
zh_CN.gbk
zh_CN.utf8
zh_HK
zh_HK.utf8
zh_TW
zh_TW.euctw
zh_TW.utf8


И, к концовочке, будет ли это работать накодировке windows-1251 или придётся всю входную инфу перекодировать в koi8-r функцией из всё той-же библиотеки pvd-lib?

BYE!
Debian/GNU Linux is rulezz...

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
мы обсуждали
« Ответ #1 : 31 Декабря 2001, 16:49:43 »
если вначале скрипта включить прагму locale, то будут использоваться локальные настройки сервера
use locale;

Беда в том, что это работает далеко не всегда и не у всех, посему некоторые рекомендуют обратиться к модулю POSIX
 в исканиях.

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
Ёмм...
« Ответ #2 : 01 Января 2002, 03:05:35 »
Так это я понял. Не можешь ли обьяснить поподробнее, КАК?
Заранее благодарен..
Debian/GNU Linux is rulezz...

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
вот тут
« Ответ #3 : 01 Января 2002, 14:56:22 »
Подробнее тут:
http://isabase.philol.msu.ru/~apavel/ruperl/ru-perl-faq-12.html#ss12.3  (и дальше пункты 12.4 и 12.5)
 в исканиях.

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
Спасибо.
« Ответ #4 : 02 Января 2002, 00:26:40 »
Хотя этот фак я уже читал. С него идея локали и пошла.
Проблема в том, что там напсано тока под НТю, а как под никсы - нет. ("Узнайте у админа"). Но у меня ближайшую неделю не будет с ним связи.
Вот я и хотел узнать, указывал ли кто-нить конкретные локали или нет. (Я не имею ща доступ к никсам, => потестить нельзя).
Debian/GNU Linux is rulezz...

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
экспериментально?
« Ответ #5 : 02 Января 2002, 03:18:32 »
ну можно попробовать то, что там написано про возможный дефаулт, а можно просто потестить - закинуть простенький скрипт с сортировкой по алфавиту и включать разные локали ;) т.е. эмпирическим путем.
 в исканиях.

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
Клёво!
« Ответ #6 : 02 Января 2002, 22:51:36 »
Так и попробую. Спасибо за идею...
Debian/GNU Linux is rulezz...

Оффлайн APL

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 344
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.aerozone.ru
вот подпрограммки без locale
« Ответ #7 : 23 Января 2002, 14:52:25 »
sub   lcrus {
   my $_str = @_[0];
   $_str =~ tr/\\xA8\\xC0-\\xDF\\x41-\\x5A/\\xB8\\xE0-\\xFF\\x61-\\x7A/;
   return $_str;
}

sub   ucrus {
   my $_str = @_[0];
   $_str =~ tr/\\xB8\\xE0-\\xFF\\x61-\\x7A/\\xA8\\xC0-\\xDF\\x41-\\x5A/;
   return $_str;
}

работает достаточно быстро

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
ну а
« Ответ #8 : 23 Января 2002, 15:19:14 »
Цитировать
работает достаточно быстро

а если нужно поиск по чему-то сделать без учета регистра, то придется все переводить в какой-нибудь один (тем что выше написано), потом искать.. не самый лучший вариант
 в исканиях.

Оффлайн SteelRat

  • Funk U!
  • Старожил
  • ****
  • Сообщений: 290
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thewebfactory.fatal.ru
Я так и сделал.
« Ответ #9 : 29 Января 2002, 06:24:49 »
Не у всех же мой мод к форуму на никсах вертится.
Щас подумываю над переводкой всех мессаг в кои под никс системой и просто юзе локале под вин (указывает юзверь)
Правда, по причине того, что сессия моя по некоторым причинам продлевается до середины февраля (ещё и сайтец один сдать надо), сделаю я это ещё не скоро..
Debian/GNU Linux is rulezz...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28