具有特殊字符的ODBC连接

时间:2018-12-18 08:39:47

标签: php json odbc special-characters

我有一个使用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;

?>

这很好用。但是,如果“名称”字段具有某些特殊字符(重音符号,ñ,Ç...),则Web服务不会向我返回任何信息。 json让我空白。

我尝试过:

utf8_decode($json);

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

但不起作用。

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:0)

如果其他人遇到问题,我会提出解决方案。

我设法解决了在将数据编码为json之前,是否将mb_convert_encoding()方法传递给遍历数据库的数据。所以我将它们编码在while循环中:

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

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

            $i++;
}