powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Проблема с кодировкой в cookie
16 сообщений из 16, страница 1 из 1
Проблема с кодировкой в cookie
    #38882045
zaumanf11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Есть 101 страница авторизации APEX. Там делаются стандартные вещи:
Сначала процесс Before header: где что то вроде этого

DECLARE
c owa_cookie.cookie;
BEGIN
c := owa_cookie.get('LOGIN_USERNAME_COOKIE');
:P101_USERNAME := c.vals(1);
......

А после сабмита что то вроде этого:

BEGIN
OWA_UTIL.MIME_HEADER('text/html', FALSE);

OWA_COOKIE.SEND(
name => 'LOGIN_USERNAME_COOKIE',
value => LOWER(:P101_USERNAME),
expires => SYSDATE + 90
);


Проблема в том что с латиницей все нормально. Куки сохраняются подставляются и все отлично. Но когда я использую в качестве логина русские буквы, например "Вася", то сохраняется в куки вот такое безобразие "????".

Я пробовал подменить P101_USERNAME на
P101_USERNAME_TEST, в котором содержится: encodeURIComponent($('#P101_USERNAME').val());

BEGIN
OWA_UTIL.MIME_HEADER('text/html', FALSE);

OWA_COOKIE.SEND(
name => 'LOGIN_USERNAME_COOKIE',
value => LOWER(:P101_USERNAME_TEST),
expires => SYSDATE + 90
);

Получаю ошибку:
ORA-20987: APEX - An unexpected internal application error has occurred. Please get in contact with your system administrator and provide reference# for further investigation

Быть может я не совсем до конца понимаю работу функции OWA_COOKIE.SEND

Натолкните плиз на правильную дорожку.
...
Рейтинг: 0 / 0
Проблема с кодировкой в cookie
    #38882056
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zaumanf11,

я попробовал на Chrome and FireFox, нет проблем с русскими буквами.
И в куках они лежат корректно и считывает он их оттуда правильно.
И процедуры стандартные я не менял
...
Рейтинг: 0 / 0
Проблема с кодировкой в cookie
    #38882062
zaumanf11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А у Вас версия какая?
У меня Application Express 4.2.4.00.08
Быть может в ней дело.
...
Рейтинг: 0 / 0
Проблема с кодировкой в cookie
    #38882068
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zaumanf11,

У меня 4.2.5, мне кажется тут проблема не Апекса. А OS, Браузер.
Проведите эксперимент, попробуйте без апекса записать куки и считать.
...
Рейтинг: 0 / 0
Проблема с кодировкой в cookie
    #38882070
zaumanf11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня они в куках тоже корректно лежат, если я document.cookie = "LOGIN_USERNAME_COOKIE=Вася" сделаю.

А следает все на знаки вопроса после того как вот это выполняется:

OWA_COOKIE.SEND(
name => 'LOGIN_USERNAME_COOKIE',
value => LOWER(:P101_USERNAME),
expires => SYSDATE + 90
);
...
Рейтинг: 0 / 0
Проблема с кодировкой в cookie
    #38882074
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zaumanf11У меня они в куках тоже корректно лежат, если я document.cookie = "LOGIN_USERNAME_COOKIE=Вася" сделаю.

А следает все на знаки вопроса после того как вот это выполняется:

OWA_COOKIE.SEND(
name => 'LOGIN_USERNAME_COOKIE',
value => LOWER(:P101_USERNAME),
expires => SYSDATE + 90
);

У меня такая
Код: plsql
1.
2.
3.
4.
5.
6.
7.
begin
owa_util.mime_header('text/html', FALSE);
owa_cookie.send(
    name=>'LOGIN_USERNAME_COOKIE_'||:APP_ID,
    value=>lower(:SP101_USERNAME));
exception when others then null;
end;


Может красного не хватает?
...
Рейтинг: 0 / 0
Проблема с кодировкой в cookie
    #38882082
zaumanf11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нее.. :( То что красненьким - это есть... Там даже в первом моем посте видно сразу после begin
Один в один как у Вас.


Чудеса какие то.
Вот если сделать так:
document.cookie = "LOGIN_USERNAME_COOKIE=Вася"
То в браузере, там в настройках в хроме можно посмотреть. И он нормально выставляется без проблем в кириллице. Я обновляю страницу, срабатывает процесс который Before header и совершенно нормально подтягивает русское слово из этого кука. Но как только делается
BEGIN
OWA_UTIL.MIME_HEADER('text/html', FALSE);

OWA_COOKIE.SEND(
name => 'LOGIN_USERNAME_COOKIE',
value => LOWER(:P101_USERNAME),
expires => SYSDATE + 90
);

Всё. Одни знаки вопросов записываются в кук.
...
Рейтинг: 0 / 0
Проблема с кодировкой в cookie
    #38882187
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zaumanf11,

Проверьте, :
1. страницы апекса выводятся в кодировке utf-8
2. Что будет, если вместо :P101_USERNAME подставить русский текст
...
Рейтинг: 0 / 0
Проблема с кодировкой в cookie
    #38882641
zaumanf11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SvDev,

По второму пункту: Если поставить русский текст вместо :P101_USERNAME, то после сабмита я получаю знаки вопросиков в куке. Количество знаков вопроса равно количеству подставленных русских символов. Соответственно после обновления страницы эти знаки вопросиков подтягиваются в поле из куков. ((
Если подставить латинские символы, вместо :P101_USERNAME, то они нормально сохраняются как надо и подтягиваются в поле - проблем нет.

По первому пункту: К сожалению не знаю как посмотреть в какой кодировке выводятся страницы апекса. Подскажите пожалуйста как посмотреть - я гляну. Но отмечу, что если я в куку явно из консоли браузера указываю:
document.cookie = "LOGIN_USERNAME_COOKIE=Вася"
то "Вася" нормально записывается в куку и даже в поле подтягивается нормально - "Вася", а не знаки вопросов. Т.е. проблема явно происходит в момент owa_cookie.send

Еще я выяснил что селект
select * from nls_database_parameters
выдает:
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA

..поэтому по совету коллег я попробовал сделать перед owa_cookie.send, так:
EXECUTE IMMEDIATE 'alter session set NLS_TERRITORY=''UNITED KINGDOM''';
...и не получил никаких изменений в поведении.
...
Рейтинг: 0 / 0
Проблема с кодировкой в cookie
    #38882657
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zaumanf11,

Это все не то, нужно посмотреть именно кодировку HTML страницы
...
Рейтинг: 0 / 0
Проблема с кодировкой в cookie
    #38882671
zaumanf11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно речь идет о том что установлено между тегами head в htmlкоде страницы?
там есть такая строка
<meta charset="utf-8">
...
Рейтинг: 0 / 0
Проблема с кодировкой в cookie
    #38882686
zaumanf11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
...
Рейтинг: 0 / 0
Проблема с кодировкой в cookie
    #38882687
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zaumanf11,

Например, в Firefox, отобразить панель меню, вид > кодировка поменять с автоопределения на utf-8, если отобразилось норм, значит utf8

И ещё покажите select * from v$version
...
Рейтинг: 0 / 0
Проблема с кодировкой в cookie
    #38882709
zaumanf11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выставил в браузере UTF-8
Ничего не изменилось, знаки вопросов ((

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
...
Рейтинг: 0 / 0
Проблема с кодировкой в cookie
    #38882755
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zaumanf11,

Нужно было только посмотреть кодировку, ну ок.
проблема судя по всему здесь:

http://docs.oracle.com/cd/E11882_01/appdev.112/e40758/w_cook.htm#ARPLS70666 Using OWA_COOKIE

Rules and Limits

All HTTP headers must be in English and the ASCII character set. If the headers are generated from the database, verify they are created in the English language.

Попробуйте применить utl_url.escape к LOWER(:P101_USERNAME) перед передачей в куку.

Если кодировка базы не UTF-8, 3-тий параметр url_charset установите в UTF-8
Код: sql
1.
2.
select value from nls_database_parameters t
where t.PARAMETER = 'NLS_CHARACTERSET'
...
Рейтинг: 0 / 0
Проблема с кодировкой в cookie
    #38882807
zaumanf11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SvDev, спасибо огромное!!!
Теперь работает!
При помощи этой функции сохраняет васю в виде "%D0%B2%D0%B0%D1%81%D1%8F" и в before header я когда читаю куку, обратно функцией unescape русские буквы возвращаю.
Большое при большое спасибо!
blkangel, Вам тоже спасибо что откликнулись!
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Проблема с кодировкой в cookie
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]