
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
13.10.2003, 16:17
|
|||
|---|---|---|---|
UTF-8 & поиск с LIKE |
|||
|
#18+
Тривиальнейшая задача интернационализации: в базе данных, содержащей записи разных charset-ов (в моем случае кирилица и немецкий), пользователь хочет искать. Я выбрал UTF-8. Миграция данных - сказка. Вывод в браузер - небо в алмазах, но когда начал искать, то оказалось, что ни ASP ни SQL (statement LIKE) неспособны различать в уникодах большие и маленькие буквы, т.е. если в базе есть слово "Тест" и пользователь задает искать "Тест", то получает ответ, что найдено. Если же задаст "тест", то поиск безуспешен. UTF-8 рекламируют как нечто новое и хорошее. Как же бороться с этой проблемой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.10.2003, 16:53
|
|||
|---|---|---|---|
|
|||
UTF-8 & поиск с LIKE |
|||
|
#18+
where ucase(a) like ucase(b) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.10.2003, 17:16
|
|||
|---|---|---|---|
UTF-8 & поиск с LIKE |
|||
|
#18+
В том то и дело, что UCASE не преобразует unicode. Ни ASP ни SQL. P.S. Разработка ведется в ASP с подключение mdb-файла через ADODB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.10.2003, 17:43
|
|||
|---|---|---|---|
|
|||
UTF-8 & поиск с LIKE |
|||
|
#18+
Что-то странное. Не мог Микрософт такую бяку подсунуть. Может какая особенность есть? Типа свойства Сжимать Юникод-поле? Кинь на всяк случай код подключения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.10.2003, 18:27
|
|||
|---|---|---|---|
UTF-8 & поиск с LIKE |
|||
|
#18+
Как обычно: set conn=server.createobject("adodb.connection") conn.open "Provider=Microsoft.Jet.OLEDB.4.0; Persist Security Info=False; Data Source="&server.mappath("blin.mdb")&"; Jet OLEDB:Database Password=;" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.10.2003, 22:59
|
|||
|---|---|---|---|
UTF-8 & поиск с LIKE |
|||
|
#18+
никто не встречался с проблемой? :o/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.10.2003, 23:13
|
|||
|---|---|---|---|
|
|||
UTF-8 & поиск с LIKE |
|||
|
#18+
>никто не встречался с проблемой? Я - нет. Посмотри свойства поля таблицы (Сжытие Юникода), посмотри индекс (удали-создай заново? а вдргу?) Случаем фигни типа совместимости с ANSY SQL92 не стоит? (у меня глючила бд капитально) Сделай маленькую демку (1 таблица - пару записей, пример выборки: выложи - форум посмотрит - мобуть чего и на советуют ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.10.2003, 08:10
|
|||
|---|---|---|---|
UTF-8 & поиск с LIKE |
|||
|
#18+
Предложенное демо я уже испробывал: создал таблицу с 2 полями (с компримацией и без), записал туда пару слов (визуально никаких различий в полях), сделал выборку set rs=conn.execute("select id, ucase(with_uni_compr) as with_uni_compr, ucase(without_uni_compr) as without_uni_compr from uni_test order by id desc") и вывел в браузер: <td><%=rs("with_uni_compr")%> <%=ucase(rs("with_uni_compr"))%></td> <td><%=rs("without_uni_compr")%> <%=ucase(rs("without_uni_compr"))%></td> Результат: - "UCASE" игнорируется в обоих случаях; - поиск с "LIKE" находит части слова, но игнорирует большие/маленькие буквы. "фини типа совместимости с ANSY SQL92 не стоит?". Ммм... что имеется в виду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.10.2003, 11:44
|
|||
|---|---|---|---|
|
|||
UTF-8 & поиск с LIKE |
|||
|
#18+
>типа совместимости с ANSY SQL92 не стоит?". Ммм... что имеется в виду? Просмотрел, что у тебя Акес2000. Энто только для 2002 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.10.2003, 11:52
|
|||
|---|---|---|---|
UTF-8 & поиск с LIKE |
|||
|
#18+
Кстати я сегодня столкнулся с такой же бедой. Из MSSQL дергает Like '%" & request.querystring("searchstr") & "%' А из Акса - Like '*" & request.querystring("searchstr") & "*' молчит... причем, естественно в самом Аксе - все ОК... но я еще не боролся, посему ответ не знаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.10.2003, 12:01
|
|||
|---|---|---|---|
|
|||
UTF-8 & поиск с LIKE |
|||
|
#18+
2funddd Что касаемо сиквела- тут должно быть все просто: см. Collation //case-sensitive or case-insensitive// или это вообще дурь ASP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.10.2003, 12:14
|
|||
|---|---|---|---|
UTF-8 & поиск с LIKE |
|||
|
#18+
Похоже, да, грешить надо на АСП.... Или, возможно, на кривую реализацию OLEDB... Или и на то и на другое вместе.... А про СКУЛЬ - там собственно, и объяснять-то ничего не надо.. Работает и пусть работает себе, чего голову ломать-то... // "И почему-же это у нас СКУЛЬ работает? Непорядок" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.10.2003, 12:32
|
|||
|---|---|---|---|
UTF-8 & поиск с LIKE |
|||
|
#18+
Кстати, я свою проблему решил. Почему-то подстановочный знак для "zero or more characters" в случае ASP для Accessa тоже % 8-() бррр... не понимаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.10.2003, 12:34
|
|||
|---|---|---|---|
UTF-8 & поиск с LIKE |
|||
|
#18+
Естественно, что проблему топика это не решает - у меня кодовая страница только одна... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=45&mobile=1&tid=1678882]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
81ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 399ms |

| 0 / 0 |
