Конвертировать из ISO-8859-2 в ORACLE набор символов AL16UTF16

0

Привет, это последующие квесты со вчерашнего дня,

У меня есть php-скрипт, который анализирует веб-сайт. Я получаю строки в UTF-8, теперь я хочу вставить эти строки в свою базу данных Oracle, которая использует:

NLS_NCHAR_CHARACTERSET = AL16UTF16
NLS_CHARACTERSET = EE8ISO8859P2

Я пробовал:

$rep = iconv("UTF-8","AL-16UTF-16",$string);      

//FAILS - производит?? в базе данных или сценариях с ошибкой "неправильная кодировка"

Я также пробовал

$rep = iconv("UTF-8","ISO-8859-2",$string);
$rep1 = iconv("UTF-8","AL-16UTF-16",$rep); 

то же, что и выше... не удается с?? в базе данных.

Кто-нибудь знает, что мне делать дальше?

  • 0
    Я думаю, что EE8ISO8859P2 - это набор символов, в который нужно преобразовать, игнорируйте AL16UTF16.
  • 0
    Да, но проблема в том, что я наберу его так: $ rep1 = iconv ("iso-8859-2", "EE-8ISO8859P2", $ rep); происходит сбой с ошибкой: неправильная кодировка, преобразование из iso-8859-2' to EE8ISO8859P2
Показать ещё 2 комментария
Теги:
encoding

1 ответ

3
Лучший ответ

Драйвер OCI неявно обрабатывает преобразование набора символов. При подключении убедитесь, что ваша кодировка установлена как UTF-8:

oci_connect($username, $password, $connection_string, 'UTF-8');

Это говорит OCI ожидать, что вы предоставите строки в формате UTF8 и предоставите результирующие объекты в UTF8, преобразованные из кодировки базы данных. Из руководства (внимание мое):

Определяет набор символов, используемый библиотеками Oracle Client. Набор символов не обязательно должен соответствовать набору символов, используемому базой данных. Если он не соответствует, Oracle сделает все возможное, чтобы преобразовать данные в набор символов базы данных и из него. В зависимости от набора символов это может не дать полезные результаты. Преобразование также добавляет некоторые накладные расходы.

Это означает, что строки, которые вы хотите ввести, находятся в UTF8, что вам вообще не нужно использовать iconv(). Просто пусть OCI справится с этим для вас.

  • 0
    ^ ЭТОТ ПАРЕНЬ! Очень ценится! Вместо UTF-8 в качестве набора символов вы должны предоставить кодировку вашей Базы данных, но я никогда не думал, что вы даже можете сделать это с параметром в функции oci_connect.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню