Из базы данных oracle, когда вы пытаетесь получить данные, обычно вы получите кодировку символов, которая будет типом кодировки клиента, установленного в системе (машина, на которой вы установили php).Эта кодировка будет кодировкой реестра Windows для клиента Oracle.(см. HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home1
), а ключ NLS_LANG
.Если вы выполните поиск по значению вышеуказанного ключа, вы получите что-то вроде ARABIC_UNITED ARAB EMIRATES.AR8MSWIN1256
.Обратите внимание, что тип кодировки AR8MSWIN1256
.В массиве карты символов это отображается на windows-1256
(windows-1256 => AR8MSWIN1256
).
См. Эту ссылку http://websvn.projects.ez.no/wsvn/ezoracle/?op=comp&compare[]=%2Fstable@385&compare[]=%2Fstable@386.
То есть после извлечения данных из базы данных кодировка char будет иметь вид windows-1256
.Теперь, если ваша веб-страница использует кодировку utf-8
, вам нужно преобразовать строку в utf-8
.Для этого вы можете использовать iconv()
.
$win1256 = iconv('windows-1256', 'utf-8', $my_string); //$my_string -> windows-1256
echo $win1256; // Results the utf-8 format .
Если у вас по-прежнему возникают проблемы, проверьте кодировку на странице, она должна быть utf-8
.<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Думаю, это решит вашу проблему.