|
|
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
Удаленно работаю с сервером Oracle. Пишу веб приложение на PHP. Если коннекчусь к базе так OCILogon($Username,$Password, $Databasename); , то запрос Select comments from myTable вернет вопросики вместо русских букв. Если при коннекте послать Charset: OCILogon($Username,$Password, $Databasename,"CL8MSWIN1251"); , в этом случае на страничке все отображается корректно. Загвоздка в том что, не получается реализовать поиск по контенту таблицы, если в условии содержится кириллица. Например Select comments from myTable where comments like '%к%' не вернет ничего, хотя буква "к" содержится в комментариях а что-то вроде Select comments from myTable where comments like '%w%' вернет верный результат select * from nls_database_parameters возвращает следующее: NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS ., NLS_CHARACTERSET CL8MSWIN1251 NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-RR NLS_DATE_LANGUAGE AMERICAN NLS_SORT BINARY NLS_TIME_FORMAT HH.MI.SSXFF AM NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR NLS_DUAL_CURRENCY $ NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE NLS_NCHAR_CHARACTERSET UTF8 NLS_RDBMS_VERSION 9.2.0.4.0 Подскажите пожалуйста, что не так. Как исправить положение ? Что нужно сделать? Неделю уже над этим бьемся. Если надо сделаем необходимые настройки на сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 13:11:40 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
в поиск ходи - под *nix апач должен видеть переменую NLS_LANG до старата. пропиши NLS_LANG и наступит счастье ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 13:17:26 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
Искал, прописывали NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 Безрезультатно :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 13:39:33 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
Твилинев ДмитрийИскал, прописывали NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 Безрезультатно :( если бы прописал - работало бы куда прописывал то ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 13:41:02 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
Твилинев ДмитрийНапример Select comments from myTable where comments like '%к%' не вернет ничего, хотя буква "к" содержится в комментариях а в этом поле comments точно есть маленькая буква "к"? просто судя по настройкам у вас будет сравнение по кодам символов и "К"<>"к" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 13:43:36 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
Твилинев Дмитрий NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CHARACTERSET CL8MSWIN1251 авторесли бы прописал - работало бы куда прописывал то ? при NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 так и должно быть. так что правильно прописывал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 13:48:34 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
masteroid при NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 так и должно быть. так что правильно прописывал что должно быть ? квадратики вместо рус букв ?? автор"Если коннекчусь к базе так OCILogon($Username,$Password, $Databasename);, то запрос Select comments from myTable вернет вопросики вместо русских букв." апач явно не в курсе про переменую среды NLS_LANG ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 13:56:10 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
masteroid Твилинев ДмитрийНапример Select comments from myTable where comments like '%к%' не вернет ничего, хотя буква "к" содержится в комментариях а в этом поле comments точно есть маленькая буква "к"? просто судя по настройкам у вас будет сравнение по кодам символов и "К"<>"к" Буква конечно есть. А про "у вас будет сравнение по кодам символов и "К"<>"к"" не понял.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 14:12:18 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
iDesperado Твилинев ДмитрийИскал, прописывали NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 Безрезультатно :( если бы прописал - работало бы куда прописывал то ? Прописывали в apachectl ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 14:28:29 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
Твилинев Дмитрий iDesperado Твилинев ДмитрийИскал, прописывали NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 Безрезультатно :( если бы прописал - работало бы куда прописывал то ? Прописывали в apachectl <? phpinfo(); ?> эту переменую видит ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 15:47:55 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
нет, в phpinfo() ее не видно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 16:38:37 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
Твилинев Дмитрийнет, в phpinfo() ее не видно чудеса, да ? :) давай отгадаю: карежишь apachectl, а рестартишь бинарник :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 16:56:29 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
кракозябры в браузере? Для начала посмотри, какая кодировка у тебя стоит для страницы: автор<meta http-equiv=Content-Type content="text/html; charset= Если авторwindows-1251 тогда смотри, какую кодировку автоматом ставит браузер. Это очень похоже (~90%) на то, что страница в кодировке UTF-8, а строки - в windows-1251... Если кодировка страницы/сайта критична, то тогда придётся прогонять строки через перекодировщик перед генерацией страницы. Что-то типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 17:35:41 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
ага, NLS_LANG который видит апач зависит от кодировки у бровсера :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 18:55:15 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
ещё у апача есть параметр, кажется, default_charset, который определяет, тег с какой кодировкой вставить. если кодировка не указана источником (скриптом). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2007, 22:47:48 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
Переменные окружения, чтобы Апач видел можно в httpd.conf прописывать. SetEnv NLS_LANG=.... Тогда он увидит их. Я в своё время оч долго и упорно пытался прописать ORACLE_HOME, ORACLE_SID etc. Если через SetEnv, то в phpinfo() нормально показывается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 07:13:24 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
приписали в httpd.conf SetEnv. добавили AddDefaultCharset windows-1251 Рестартовали сервер. в результате phpinfo() выдает в разделе Apache Environment NLS_LANG American_America.CL8MsWin1251 PHP Variables _SERVER["NLS_LANG"] American_America.CL8MsWin1251 результаты выборки прежние :( Для cherva Проблема не в том, как вывести на страницу. Это получается (см. первый топик). проблема в том, что на сервер видимо кириллица летит перекодированная, в результате не могу сделать контекстный поиск по таблице... Есть еще у кого нидь предложения ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 08:56:54 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
Твилинев Дмитрийприписали в httpd.conf SetEnv. добавили AddDefaultCharset windows-1251 Рестартовали сервер. результаты выборки прежние :( Из под какого юзера стартует Апач? Что есть ораклового в его переменных окружения? Ну или, проще, запустить sqlplus из под этого юзера и посмотреть результаты запросов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 12:29:02 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
Твилинев Дмитрий Для cherva не могу сделать контекстный поиск по таблице ... Простите, невнимательно вчитался в проблему. А не пробовали ли Вы использовать для коннекта к БД библиотеку ADODB ? Там на уровне сессии возможно применить NLS_*, что кстати Вы можете сделать и самостоятельно, к примеру: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 13:16:16 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
Твилинев Дмитрий Есть еще у кого нидь предложения ? угу, разобратся кто виноват: запустите скрипт прямо из командной строки без апача. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 13:22:47 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
cherva Твилинев Дмитрий Для cherva не могу сделать контекстный поиск по таблице ... Простите, невнимательно вчитался в проблему. А не пробовали ли Вы использовать для коннекта к БД библиотеку ADODB ? Там на уровне сессии возможно применить NLS_*, что кстати Вы можете сделать и самостоятельно, к примеру: Код: plaintext 1. 2. 3. 4. Используется компонента, которая работает как раз таки с ADODB. В документации ADODB видел что можно использовать (и используется) аlter session, а вот такие штуки не видел. Но попробую... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 15:49:50 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
Твилинев Дмитрий... как раз таки с ADODB. В документации ADODB видел что можно использовать (и используется) аlter session, а вот такие штуки не видел. Но попробую... 7. Dates and Datetime in ADOdb , а я действовал по аналогии... И, что характерно, прекрасно работает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2007, 17:55:19 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
2 Твилинев Дмитрий: Используете ли Вы вызов хранимых процедур через ADODB? Если ДА, то как? В документации нашёл только работу с курсорами, но это не совсем то, что мне надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 19:48:48 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
iDesperado masteroid при NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 так и должно быть. так что правильно прописывал что должно быть ? квадратики вместо рус букв ?? автор"Если коннекчусь к базе так OCILogon($Username,$Password, $Databasename);, то запрос Select comments from myTable вернет вопросики вместо русских букв." апач явно не в курсе про переменую среды NLS_LANG Ну а как сам автор думает - язык американский, откуда там русские буквы?? Это для апаче не русские буквы а глюки, вот он их и рисует как глюки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 22:31:06 |
|
||
|
Oracle + PHP + кириллица. Не понимаю
|
|||
|---|---|---|---|
|
#18+
Alex Roudnev Ну а как сам автор думает - язык американский, откуда там русские буквы?? Это для апаче не русские буквы а глюки, вот он их и рисует как глюки. а какое отношение имеет язык к кодировки ? oracle docs The NLS_LANG parameter uses the following format: NLS_LANG = LANGUAGE_TERRITORY.CHARACTER_SET This format is explained in the following table: Parameter Description LANGUAGE Specifies the language for displaying product messages, day names, and month names in SQL. Oracle Database Globalization Support Guide provides more information about languages. TERRITORY Specifies the cultural-specific conventions for date, number, time, and monetary formatting. Oracle Database Globalization Support Guide provides more information about territory conventions. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 23:41:58 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=34855149&tid=1887826]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
167ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 224ms |
| total: | 490ms |

| 0 / 0 |
