|
|
|
UTF-8 & поиск с LIKE
|
|||
|---|---|---|---|
|
#18+
Тривиальнейшая задача интернационализации: в базе данных, содержащей записи разных charset-ов (в моем случае кирилица и немецкий), пользователь хочет искать. Я выбрал UTF-8. Миграция данных - сказка. Вывод в браузер - небо в алмазах, но когда начал искать, то оказалось, что ни ASP ни SQL (statement LIKE) неспособны различать в уникодах большие и маленькие буквы, т.е. если в базе есть слово "Тест" и пользователь задает искать "Тест", то получает ответ, что найдено. Если же задаст "тест", то поиск безуспешен. UTF-8 рекламируют как нечто новое и хорошее. Как же бороться с этой проблемой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2003, 16:17 |
|
||
|
UTF-8 & поиск с LIKE
|
|||
|---|---|---|---|
|
#18+
where ucase(a) like ucase(b) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2003, 16:53 |
|
||
|
UTF-8 & поиск с LIKE
|
|||
|---|---|---|---|
|
#18+
В том то и дело, что UCASE не преобразует unicode. Ни ASP ни SQL. P.S. Разработка ведется в ASP с подключение mdb-файла через ADODB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2003, 17:16 |
|
||
|
UTF-8 & поиск с LIKE
|
|||
|---|---|---|---|
|
#18+
Что-то странное. Не мог Микрософт такую бяку подсунуть. Может какая особенность есть? Типа свойства Сжимать Юникод-поле? Кинь на всяк случай код подключения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2003, 17:43 |
|
||
|
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, 18:27 |
|
||
|
UTF-8 & поиск с LIKE
|
|||
|---|---|---|---|
|
#18+
никто не встречался с проблемой? :o/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2003, 22:59 |
|
||
|
UTF-8 & поиск с LIKE
|
|||
|---|---|---|---|
|
#18+
>никто не встречался с проблемой? Я - нет. Посмотри свойства поля таблицы (Сжытие Юникода), посмотри индекс (удали-создай заново? а вдргу?) Случаем фигни типа совместимости с ANSY SQL92 не стоит? (у меня глючила бд капитально) Сделай маленькую демку (1 таблица - пару записей, пример выборки: выложи - форум посмотрит - мобуть чего и на советуют ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2003, 23:13 |
|
||
|
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, 08:10 |
|
||
|
UTF-8 & поиск с LIKE
|
|||
|---|---|---|---|
|
#18+
>типа совместимости с ANSY SQL92 не стоит?". Ммм... что имеется в виду? Просмотрел, что у тебя Акес2000. Энто только для 2002 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 11:44 |
|
||
|
UTF-8 & поиск с LIKE
|
|||
|---|---|---|---|
|
#18+
Кстати я сегодня столкнулся с такой же бедой. Из MSSQL дергает Like '%" & request.querystring("searchstr") & "%' А из Акса - Like '*" & request.querystring("searchstr") & "*' молчит... причем, естественно в самом Аксе - все ОК... но я еще не боролся, посему ответ не знаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 11:52 |
|
||
|
UTF-8 & поиск с LIKE
|
|||
|---|---|---|---|
|
#18+
2funddd Что касаемо сиквела- тут должно быть все просто: см. Collation //case-sensitive or case-insensitive// или это вообще дурь ASP? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 12:01 |
|
||
|
UTF-8 & поиск с LIKE
|
|||
|---|---|---|---|
|
#18+
Похоже, да, грешить надо на АСП.... Или, возможно, на кривую реализацию OLEDB... Или и на то и на другое вместе.... А про СКУЛЬ - там собственно, и объяснять-то ничего не надо.. Работает и пусть работает себе, чего голову ломать-то... // "И почему-же это у нас СКУЛЬ работает? Непорядок" :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 12:14 |
|
||
|
UTF-8 & поиск с LIKE
|
|||
|---|---|---|---|
|
#18+
Кстати, я свою проблему решил. Почему-то подстановочный знак для "zero or more characters" в случае ASP для Accessa тоже % 8-() бррр... не понимаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 12:32 |
|
||
|
UTF-8 & поиск с LIKE
|
|||
|---|---|---|---|
|
#18+
Естественно, что проблему топика это не решает - у меня кодовая страница только одна... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2003, 12:34 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32292482&tid=1678882]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
74ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 228ms |
| total: | 418ms |

| 0 / 0 |
