Соединение ODBC со специальными символами - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть соединение с базой данных, которое я сделал с помощью соединителя odbc.Проблема в том, что у меня есть поле, содержащее специальные символы, такие как акценты, и оно не распознает их.

Это мой веб-сервис:

<?php
    define('CHARSET','UTF-8');
    header('Content-Type: text/html; charset=UTF-8');

    $usuario='';

    $pass='';

    $dsn='Tr3';

    $conexion = odbc_connect($dsn,$usuario,$pass);


   $sql="select total, name, domin from F_VENTA where Ve_FirmaCamion=true";


    $rs = odbc_exec($conexion, $sql);
    if (!$rs) {
        exit("Error al conectar la base de datos");
    }
    $datos = array();
    $i = 1;

    while($row = odbc_fetch_array($rs)) {

        $datos[] = $row;
        $i++; 
    }


    odbc_close($conexion);

    $json = json_encode($datos);

    echo $json;

?>

Это прекрасно работает.Но если поле «имя» имеет какой-то специальный символ (акценты, ñ, Ç ...), то веб-служба мне ничего не возвращает.Json оставляет меня пустым.

Я пробовал:

utf8_decode($json);

и

$cadena= htmlentities($json, ENT_QUOTES, "UTF-8");

, но не работает.

Любой совет?Спасибо!

1 Ответ

0 голосов
/ 18 декабря 2018

Я привожу свое решение проблемы в случае, если это случится с кем-то еще.

Мне удалось решить, если перед кодированием данных в json я передаю метод mb_convert_encoding() данным, которые поступают внас из базы данных, пока он обходит.Поэтому я закодирую их в цикле while:

while($row = odbc_fetch_array($rs)) {

            $datos[] = mb_convert_encoding($row, "UTF-8", "iso-8859-1");

            $i++;
} 
...