Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
Такая тема.... Есть сервер/база.... Точнее должна быть. Будет поиск с применением Upper() и Lower(). Но фокус в том, что в базе данные на нескольких неанглийских ;-) языках. Какие параметры задать серверу и базе, чтобы Upper() и Lower() корректно работали для ЛЮБОГО языка! Вот... собсно я пока не могу понять.... Сервер под редхатом будет.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 01:04 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
нужно инициализировать кластер в кодировке UTF-8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 02:19 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
Понял, попробую.... а то что-то путаница прям какая-то после фаерберда :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2008, 11:30 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
To xUSSR Уточнение: есть таблица, в которой в перемешку лежат записи с разных языков ? Очень интересно было бы узнать результат Lower/Upper и Order by. Не отпишите ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 09:06 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
Как настрою сервер..... Да в одной таблице несколько языков.... попробую даже раньше под виндой.... поставлю ради теста сервер ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2008, 20:28 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
установил CentOS 5 и постгрес 8.1.9 initdb -D --encoding=UTF8 --locale=ru_RU.utf8 Создал базу в utf8 - lower работает. создал в 1251 - хер. Обсуждать другие языки даже смешно.... в параметре --locale согласно доке можно задать несколько локалей - как это работает - хз, время тратить неохота, но то что СУБД .... очевидно ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2008, 12:04 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
авторсоздал в 1251 зачем Вам это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2008, 12:15 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
xUSSRinitdb -D --encoding=UTF8 --locale=ru_RU.utf8 Создал базу в utf8 - lower работает. создал в 1251 - хер.создавать несколько баз в разных кодировках, не совпадающих с локалью процесса сервера - не нужно. это не будет работать. Вам нужно использовать только _одну_ кодировку - UTF8, она включает в себя все остальные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2008, 14:52 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
Ёшсоздавать несколько баз в разных кодировках, не совпадающих с локалью процесса сервера - не нужно. это не будет работать. Вам нужно использовать только _одну_ кодировку - UTF8, она включает в себя все остальные. Да? И как мне сделать, чтобы лежащие в одной таблице рашн буквы и, например, украинские "подчинялись" команде lower. Сервер ТРЕБУЕТ locale - или сам ставит свою. Не указал локаль "рашн" - ничего не приводится к нижнему регистру. Интуитивно кажется, что задав несколько локалей на кластер можно решить проблему, но что-то есть сомнения. Других путей нет - в данном случае кодировка базы ничего вообще не дает... Т.е. хранить то украинские буквы можно, но lower будет работать только для инглиша и раши. :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2008, 15:34 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
покажите что у Вас не получается. покажите пример текста на украинском который не приводится к нужному регистру. у меня работает: Код: plaintext 1. 2. 3. 4. авторустановил CentOS 5 и постгрес 8.1.9постгрес использует системные библиотеки для поддержки локалей - возможно проблема в CentOS (скорее всего) ? ещё попробуйте новый постгрес 8.3 (хотя у меня работает вышеприведённая строка и в 8.1 и в 8.2) -- „Истина — это вовсе не то, что можно убедительно доказать, это то, что делает всё проще и понятнее“ — Антуан де Сент-Экзюпери ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2008, 16:44 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
двойное двоеточие в "РУС.::" и отсутствие его в запросе - это не глюк, это я накосячил когда копировал %) -- „Истина — это вовсе не то, что можно убедительно доказать, это то, что делает всё проще и понятнее“ — Антуан де Сент-Экзюпери ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2008, 16:47 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
если у Вас нет соответствующих шрифтов - то вот картинка (на всякий случай) -- „Истина — это вовсе не то, что можно убедительно доказать, это то, что делает всё проще и понятнее“ — Антуан де Сент-Экзюпери ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2008, 16:54 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
Стоп!!! Как был инициализирован кластер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2008, 18:14 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
xUSSRСтоп!!! Как был инициализирован кластер?как Вам сказал уже iz во втором сообщении темы: utf-8 локаль: ru_RU.UTF-8 кодировка: UTF-8 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. кластер инициализировался автоматически, при установке пакета. точную команду которая при этом выполнялась - не скажу, но видимо как Вы сами писали выше: initdb -D /path/to/data --encoding=UTF-8 --locale=ru_RU.UTF-8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2008, 19:08 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
Наверно в системе просто не установлены локали, наверняка тока русский был поставлен... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.04.2008, 22:36 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
VzhikНаверно в системе просто не установлены локали, наверняка тока русский был поставлен...у меня тоже только русская и английская, ни турецкой ни украинской нет :) но кодировка utf-8 правильно обрабатывается (как и должно быть :) ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2008, 02:02 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
Гость_0 VzhikНаверно в системе просто не установлены локали, наверняка тока русский был поставлен...у меня тоже только русская и английская, ни турецкой ни украинской нет :) но кодировка utf-8 правильно обрабатывается (как и должно быть :) ) может тогда подскажете автору какая у вас ОС, версия базы и локали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2008, 02:06 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
Итак.... CentOS 5.1, стандартный пакет для постгреса (8.1.9) локаль ru.RU.utf8. Количество локалей в ОС не поддается подсчету - их много.... а фокус в программе, которой вставляли записи в базу с удаленной машины.... Попробовали написать php скрипт в utf-8, воткнули украинский и русский язык в одну таблицу - lower при запросе для этой таблицы РОБОТАЕТ. Мы накосячили и я занервничал :-). А занервничал я потому, что вообще возник такой странный вопрос, ибо в том же интербейсе/фаерберде эта проблема решалась тупым указанием коллейшена непосредственно в запросе. Собсно вот. Вроде пришли к логическому завершению. Непонятно одно, зачем тады в постгресе поддерживается список локалей для кластера, если в utf8 усе работает. Может русский и украинский частный случай? И на самом деле при вставке в базу русского текста и, например, иврита ничего подобного работать не будет? Вобщем осадок остался.... ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2008, 10:40 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
Писал с мобилы, так что за ошипки не надо пинать :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2008, 10:41 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
xUSSRИтак.... CentOS 5.1, стандартный пакет для постгреса (8.1.9) локаль ru.RU.utf8. Количество локалей в ОС не поддается подсчету - их много.... а фокус в программе, которой вставляли записи в базу с удаленной машины.... Попробовали написать php скрипт в utf-8, воткнули украинский и русский язык в одну таблицу - lower при запросе для этой таблицы РОБОТАЕТ. Мы накосячили и я занервничал :-). А занервничал я потому, что вообще возник такой странный вопрос, ибо в том же интербейсе/фаерберде эта проблема решалась тупым указанием коллейшена непосредственно в запросе. Собсно вот. Вроде пришли к логическому завершению. Непонятно одно, зачем тады в постгресе поддерживается список локалей для кластера, если в utf8 усе работает. Может русский и украинский частный случай? И на самом деле при вставке в базу русского текста и, например, иврита ничего подобного работать не будет? Вобщем осадок остался.... ;-) utf8 - это больший объём данных, чем нативная локаль. + еще не так давно с УТФ-8 были проблемы. Думаю, что будущее - именно за этой локалью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2008, 11:47 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
Я ответил так, потому что имеет меня Solaris 10... тока когда поставил версию (8/07 или u4).... сортировка заработала правда как аАбБвВ... (сначала маленькие буквы затем заглавные) и явно это зависело от установленной локали проверить что установлено sh> locale -a ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2008, 11:57 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
xUSSRА занервничал я потому, что вообще возник такой странный вопрос, ибо в том же интербейсе/фаерберде эта проблема решалась тупым указанием коллейшена непосредственно в запросе.по моему это очень странно - указывать правила collate в запросе :) а если у меня индекс create index aaa_idx(upper(t)) а в запросе я указываю другую локаль - то сортировка данных не совпадёт с сортировкой индексов %) если в интербейз нельзя делать индекс по функции - то тогда всё понятно - пусть извращаются как хотят там у себя :) xUSSRНепонятно одно, зачем тады в постгресе поддерживается список локалей для кластера, если в utf8 усе работает.я приблизительно понимаю что Вы хотели сказать, но всё равно уточню - в постгресе НЕТ никакого списка локалей в кластере. локаль железно прописывается в кластер при создании, она одна и изменить её нельзя. если же речь о том - зачем другие кодировки если есть unicode, то.... во первых - как не странно, не все символы есть в unicode %) вспомните что есть тексты на таких языках как: старо/церковно славянский, иероглифы китайские/японские (проблема в том что - они есть, но не все варианты). кстати, Вы не поверите, но есть даже языки где цифры - не арабские или римские ! :) во вторых, Вы не забывайте что постгрес: "It runs on all major operating systems, including Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64), and Windows" я честно говоря не уверен что все эти системы и их варианты, на которых работает postgres, поддерживают unicode в полном объёме (а постгрес использует системные функции для поддержки локали). в третьих - как уже говорилось выше - скорость и размер. ну и в четвёртых - с utf8 работает, но не всё :) есть известная проблема - регулярные выражения в постгрес некорректно работают с этой кодировкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2008, 16:25 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
Стоп! вот здесь написано следущее: " Locale support is automatically initialized when a database cluster is created using initdb. initdb will initialize the database cluster with the locale setting of its execution environment by default, so if your system is already set to use the locale that you want in your database cluster then there is nothing else you need to do. If you want to use a different locale (or you are not sure which locale your system is set to), you can instruct initdb exactly which locale to use by specifying the --locale option. For example: initdb --locale=sv_SE This example sets the locale to Swedish (sv) as spoken in Sweden (SE). Other possibilities might be en_US (U.S. English) and fr_CA (French Canadian). If more than one character set can be useful for a locale then the specifications look like this: cs_CZ.ISO8859-2." Какой смысл тогда несет СПИСОК локалей? И, следуя логике, можно вообще не указывать этот параметр при создании кластера, если уже указано UTF8. Ибо тогда, раз работают два языка на русском UTF (локаль), lower будет работать на любой локали для любого языка. Я правильно понял? Будем рассматривать идеальный случай, когда ОС поддерживает UTF для всех требуемых языков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2008, 22:35 |
|
||
|
Upper() и Lower() для нескольких языков
|
|||
|---|---|---|---|
|
#18+
локализация и кодировка - это разные вещи. локализация включает в себя указание кодровки, но не ограничивается этим. ещё локализация включает в себя формат даты, времени, разделителей цифр в числах, тексты собщений и многое другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.04.2008, 15:05 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=35263769&tid=2004421]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
21ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 315ms |

| 0 / 0 |
