parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

oracle вывод из базы кодировка

nreg 26.08.2022 09:47 / 26.08.2022 10:02

Всем привет.
Подскажите, такая проблема.
есть бд оракл 11.2.0.4 на oracle Linux 7.9 x64
DATABASE
NLS_CALENDAR	GREGORIAN
NLS_CHARACTERSET	CL8MSWIN1251
NLS_COMP	BINARY
NLS_CURRENCY	$
NLS_DATE_FORMAT	DD-MON-RR
NLS_DATE_LANGUAGE	AMERICAN
NLS_DUAL_CURRENCY	$
NLS_ISO_CURRENCY	AMERICA
NLS_LANGUAGE	AMERICAN
NLS_LENGTH_SEMANTICS	BYTE
NLS_NCHAR_CHARACTERSET	AL16UTF16
NLS_NCHAR_CONV_EXCP	FALSE
NLS_NUMERIC_CHARACTERS	.,
NLS_RDBMS_VERSION	11.2.0.4.0
NLS_SORT	BINARY
NLS_TERRITORY	AMERICA
NLS_TIMESTAMP_FORMAT	DD-MON-RR HH.MI.SSXFF AM
NLS_TIMESTAMP_TZ_FORMAT	DD-MON-RR HH.MI.SSXFF AM TZR
NLS_TIME_FORMAT	HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT	HH.MI.SSXFF AM TZR
SESSION
Parameter	Value
NLS_CALENDAR	GREGORIAN
NLS_COMP	BINARY
NLS_CURRENCY	$
NLS_DATE_FORMAT	DD-MON-RR
NLS_DATE_LANGUAGE	AMERICAN
NLS_DUAL_CURRENCY	$
NLS_ISO_CURRENCY	AMERICA
NLS_LANGUAGE	AMERICAN
NLS_LENGTH_SEMANTICS	BYTE
NLS_NCHAR_CONV_EXCP	FALSE
NLS_NUMERIC_CHARACTERS	.,
NLS_SORT	BINARY
NLS_TERRITORY	AMERICA
NLS_TIMESTAMP_FORMAT	DD-MON-RR HH.MI.SSXFF AM
NLS_TIMESTAMP_TZ_FORMAT	DD-MON-RR HH.MI.SSXFF AM TZR
NLS_TIME_FORMAT	HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT	HH.MI.SSXFF AM TZR
Строка соединения с БД
$SQL.connect-string[oracle://system:oracle@10.0.0.10/ORCL?NLS_LANG=American_America.UTF8&NLS_DATE_FORMAT=YYYY-MM-DD HH24:MI:SS]
Переменные Linux
[oracle@deskdb01 ~]$ env | grep NLS*
NLS_LANG=American_America.UTF8
Вывод из консоли sqlplus самого сервера
[oracle@deskdb01 ~]$ sqlplus system/oracle@orcl

SQL*Plus: Release 11.2.0.4.0 Production on Fri Aug 26 11:39:25 2022

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select * from desk.t;

NAME
--------------------------------------------------------------------------------
       NUM DATEINSERT
---------- ---------------
CHARS
------------------------------------------------------------
Определить какая кодировка у этого текста
           26-AUG-22
Но когда я на сайте делаю вывод этого же...
все в вопросах
конфиг. auto.p
@USE
/classes/Oracle.p
/classes/OracleComp.p
@auto[]
$response:cache-control[ $.value[0]]
$response:pragma[$.value[no-cache]]
$response:content-type[ 
   $.value[text/html] 
] 

$oSql[^Oracle::create[$SQL.connect-string;
	$.sCacheDir[/../data/sql_cache]
	$.bDebug(true)
]]

$SQL[
	$.drivers[^table::create{protocol	driver	client
oracle	$sqldriversdir/libparser3oracle.so	$sqldriversdir/libclntsh.so
}]
]
Параметры Oracle.p
@setServerEnvironment[]
# set date/time format and language
^void:sql{ALTER SESSION SET NLS_LANGUAGE="AMERICAN"}
^void:sql{ALTER SESSION SET NLS_TERRITORY="AMERICA"}
^void:sql{ALTER SESSION SET NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"}
Но на сайте при всем при этом в выводе я вижу
"?????????????????????????????????????"
$t[^table::sql{select chars, dateinsert, num, name from desk.t order by dateinsert desc}]

<table>
^t.menu{<tr><td>^t.line[]</td><td>$t.dateinsert</td><td>$t.name</td></tr>}
</table>
Всего строк 1
Вывод:
1 26-AUG-22 ?????????? ????? ????????? ? ????? ??????
P.S.
Изменение NLS_LANG на NLS_LANG=RUSSIAN_CIS.CL8MSWIN1251
результата не дала


############## Код тестовой страницы #############
@formTest[]
<form method="post">
</p><input type="text" name="name" value="Определить какая кодировка у этого текста"> Текст
</p><button name="addTest" value="post">Сохранить</button>
</form>

^if(def $form:addTest){

^try{
	^rem{ *** проверяем все-ли в форме заполнено как надо *** }
	^check[]
	^createTestRecord[]
}{
		^if($exception.type eq "name"){
			$exception.handled(1)
			Поле пустое 
		}
}
}

@createTestRecord[]
^void:sql{truncate table desk.t} 

Вы внесли запись
^void:sql{insert into desk.t (NAME) 
	values ('$form:name')}

@check[]
^if(!def $form:name){
^throw[name;введите текст]
}


@listTestRecord[]
$t[^table::sql{select chars, dateinsert, num, name from desk.t order by dateinsert desc}]
^if(def $t){
Всего строк ^t.count[] </p>
Вывод: <br>
<table>
^t.menu{
<tr>
<td>^t.line[] </td><td>$t.dateinsert</td><td>$t.name</td>
</tr>
}
</table>
}{Таблица пустая}


  • oracle вывод из базы кодировка, nreg 26.08.2022 09:47 / 26.08.2022 10:02