Проблема с кодировкой UTF8 в PHP74, CodeIgniter 2, Oracle 11 [дубликат]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Проблема с кодировкой UTF8 в PHP74, CodeIgniter 2, Oracle 11 [дубликат]

Сообщение Anonymous »

Я не переношу и не меняю сервер базы данных. Он находится на другом сервере, отличном от сервера приложений.
Я переношу только приложение, работающее в следующей среде:
  • операционная система: Windows 2000
  • технический стек: xampp с Apache и PHP 5.4 с поддержкой Oracle OCI
  • фреймворк: CodeIgniter 2
Новая среда:

[*]os: oracle linux 7
< li>Версия PHP: php 7.4, php-fm включен
[*]Служба httpd включена
[*]Версия базы данных Oracle: 11
[*]Версия OCI 8: 2.2.0
[*]Версия клиентской библиотеки времени выполнения Oracle: 18.5.0.0.0
[*]Мгновенный запуск во время компиляции Oracle Версия клиента: 18.5
[*]mbstring.encoding_translation: включена
[*]mbstring.func_overload: 0
[*]mbstring.http_input : UTF-8
[*]mbstring.http_output : UTF-8
[*]mbstring.internal_encoding : UTF-8

Это я сделал:

[*]Я преобразовал несколько файлов CodeIgniter 2, чтобы он работал в php 7, как и изменения в конструкторе< /li>
настроил php.ini, apache с переменными env для соответствия utf8
[*]явное определение кодировки utf8 в соединении oci8
< /ul>
Снимок экрана с информацией о моем PHP:
Изображение

Мой пример кода:

Код: Выделить всё

$conn = oci_connect('xxxx', 'xxx', 'xxx', 'AL32UTF8');

if (!$conn) {
$e = oci_error();
echo "Connection failed: " . $e['message'];
exit;
}
// Set the NLS_LANG for the session
oci_execute(oci_parse($conn, "ALTER SESSION SET NLS_LANGUAGE='AMERICAN'"));
oci_execute(oci_parse($conn, "ALTER SESSION SET NLS_TERRITORY='AMERICA'"));
oci_execute(oci_parse($conn, "ALTER SESSION SET NLS_CHARACTERSET='AL32UTF8'"));

oci_set_client_info($conn, "NLS_LANG=AMERICAN_AMERICA.AL32UTF8");
mb_internal_encoding('UTF-8');

$query = 'SELECT * FROM ABC_TABLE';
$stid = oci_parse($conn, $query);
oci_execute($stid);

while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) != false) {
foreach ($row as $item) {
echo htmlspecialchars($item, ENT_QUOTES, 'UTF-8') . "
\n";
echo htmlspecialchars($item, ENT_QUOTES | ENT_HTML5, 'UTF-8'). "
\n";

echo $item . "
\n";
echo mb_convert_encoding($item, 'UTF-8', 'auto') . "
\n";;

}
}

oci_free_statement($stid);
oci_close($conn);
Но мои значения все равно не отображаются должным образом в кодировке utf8...
**В моих выводах не отображаются правильные значения Юникода ​​нравится:
शà¥à¤°à¥€ कृषà¥à¤£ सिंà**

Подробнее здесь: https://stackoverflow.com/questions/791 ... -oracle-11
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»