Получение значения NULL для параметра select, заполненного JSON, содержащим специальные символы

Я заполняю <select> из JSON.
Проблема заключается в том, что когда значение, полученное из базы данных mysql, имеет специальные символы, такие как Ñ или же Á, Я собираюсь NULL в <select>,

Вот мой код JS:

function llenarEspecialidad()
{
var espec =  $("#comboEspecialidad").val();
var $select = $("#comboMedicoIC");
document.formAgregar.comboMedicoIC.length=0;
document.formAgregar.comboMedicoIC.options[0] = new Option("Seleccione","0","defaultSelected","");

$(function(){
var items="";
$.getJSON("internacionLlenarMedicos.php?&idEspecialidad="+espec,function(data){
$.each(data,function(index,item)
{
items+="<option value='"+item.idMedico+"'>"+item.Medico+"</option>";
});
$select.append(items);
});
});
};

А вот код на стороне сервера:

$espe = $_REQUEST["idEspecialidad"];
$sql_depto = "SELECT idMedico, CONCAT(apellido, ',', nombre) As Medico FROM medicos where activo is Null and ( (".$espe."=0) or (".$espe."<>0 and ".$espe." = idEspecialidad  ) ) ORDER by apellido ASC";
$rs_depto = mysql_query($sql_depto, $conexion);
$data = array();
while($row_depto = mysql_fetch_assoc($rs_depto))
$data[] =$row_depto;
echo json_encode($data);

Оба PHP-файла имеют кодировку ANSI, я не могу кодировать в UTF-8, потому что если я это сделаю, то возникнут другие проблемы.

2

Решение

Проблема в том, что json_encode правильно работает только со строками utf-8, в противном случае он вернет значение null, поэтому вам придется его кодировать.

Так что вы можете попробовать utf8_decode

// this is just an example for one dimensional arrays
$your_array = array_map( "utf8_decode" , $your_array );

если это не работает, вы должны проверить набор символов или сопоставление БД и использовать mb_convert_encoding

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]