使用解决方案进行编辑!!!! 对于NOOBS来说非常重要我喜欢:
问题是数据不是UTF-8所以我包含一个将这些数据转换为UTF-8的函数。
这里的功能:
function utf8_string_array_encode(& $ array){ $ func = function(& $ value,& $ key){ 如果(IS_STRING($值)){ $ value = utf8_encode($ value); } 如果(IS_STRING($键)){ $ key = utf8_encode($ key); } 如果(is_array($值)){ utf8_string_array_encode($值); } }; array_walk($阵列,$ FUNC); return $ array; }
然后当我使用字符串UTF-8的新数组时,我使用json_encode,结果是:
{ “0”: “1”, “CodigoAbogado”: “1”, “1”: “24898”, “NumeroColegiado”: “24898”, “2”:“JOAN LLUIS GONZALEZ FERRERI“,”Nombre“:”JOAN LLUIS GONZALEZ FERRERI “ ”3“: ”“, ”NombreComun“: ”“, ”4“: ”“, ”NIF“: ”“, ”5“: ”“, ”Direccion“: ”“, ”6“:” juanluis@ferreriabogados.com”, “邮件”: “juanluis@ferreriabogados.com”, “7”: “”, “CodigoPostal”: “”, “8”: “”, “Poblacion”: “”, “9” : “”, “省报”: “”, “10”: “埃斯帕\ u00f1a”, “国家报”: “埃斯帕\ u00f1a”, “11”: “”, “NOTAS”: “”, “12”:” Administrador”, “Usuario”: “Administrador”, “13”: “1”, “SerialCertificado”: “1”, “14”:0, “CodigoColegioAbogado”:0, “15”: “”, “NombreColegioAbogado”: “”, “16”: “00”, “CanalHabitualAbogado”: “00”, “17”: “”, “EmpresaPredeterminadaEosCodigo”: “”, “18”: “”, “EmpresaPredeterminadaEosNombre”: “”, “19” : “0000000001”, “ClienteTurnoOficio”: “0000000001”, “20”: “00”, “ClienteSerieTurnoOficio”: “00”, “21”:0, “IPF”:0, “22”: “”,“TipoVia “:” “ ”23“: ”“, ”ImportIdentificacion“: ”“, ”24“: ”“, ”CertNombre“: ”“, ”25“:” “ ”Sexo“:” ”, “26”:0, “DESC1”:0, “27”:0, “DESC2”:0, “28”:0, “Desc3”:0, “29”:0, “Desc4”:0, “30”:0, “Desc5”:0, “31”:0, “Desc6”:0, “32”:1, “Avis_Guardia”:1, “33”:0, “Avis_Vista”:0,“34 “:1,” Tiempo_Avis “:1,” 35 “:3”,Tiempo_Tipo “:3,” 36 “:1,” MostrarInforme “:1,” 37 “:” 000000002EEFA536C0B8B44B9B44E513587FBA9BA4F22000" , “IdOutLook”: “000000002EEFA536C0B8B44B9B44E513587FBA9BA4F22000”, “38”:“十一月 10 2011 11:32:54:000AM“,”UltimaModificacion“:”2011年11月10日 11:32:54:000AM”, “39”: “\ u00bd”, “ESPECIAL”: “\ u00bd”}]
我在php中有一个小脚本有问题。
脚本在MS SQL中访问数据库并获取执行查询的数据。
代码是:
<?php
$conn = mssql_connect('PROGRAMACION6', 'Administrador', '');
mssql_select_db('Empresa_00001', $conn);
$queryStr = "Select * from abogados where usuario='Administrador'";
$query= mssql_query($queryStr) or die('MSSQL error: ' . mssql_get_last_message());
$arr = array();
while ($obj = mssql_fetch_array($query)) {
$arr[] = $obj;
}
echo '{"Objetos:"'.json_encode($arr).'}';
?>
当我执行我的脚本时,我得到一个白色屏幕,显示任何数据......
但是当我说出来的时候:
print_r ($arr);
我可以看到数组内容跟随数据:
Array ( [0] => Array ( [0] => 1 [CodigoAbogado] => 1 [1] => 24898 [NumeroColegiado] => 24898 [2] => JOAN LLUIS GONZALEZ FERRERI [Nombre] => JOAN LLUIS GONZALEZ FERRERI [3] => [NombreComun] => [4] => [NIF] => [5] => [Direccion] => [6] => juanluis@ferreriabogados.com [Mail] => juanluis@ferreriabogados.com [7] => [CodigoPostal] => [8] => [Poblacion] => [9] => [Provincia] => [10] => España [Pais] => España [11] => [Notas] => [12] => Administrador [Usuario] => Administrador [13] => 1 [SerialCertificado] => 1 [14] => 0 [CodigoColegioAbogado] => 0 [15] => [NombreColegioAbogado] => [16] => 00 [CanalHabitualAbogado] => 00 [17] => [EmpresaPredeterminadaEosCodigo] => [18] => [EmpresaPredeterminadaEosNombre] => [19] => 0000000001 [ClienteTurnoOficio] => 0000000001 [20] => 00 [ClienteSerieTurnoOficio] => 00 [21] => 0 [IPF] => 0 [22] => [TipoVia] => [23] => [ImportIdentificacion] => [24] => [CertNombre] => [25] => [Sexo] => [26] => 0 [Desc1] => 0 [27] => 0 [Desc2] => 0 [28] => 0 [Desc3] => 0 [29] => 0 [Desc4] => 0 [30] => 0 [Desc5] => 0 [31] => 0 [Desc6] => 0 [32] => 1 [Avis_Guardia] => 1 [33] => 0 [Avis_Vista] => 0 [34] => 1 [Tiempo_Avis] => 1 [35] => 3 [Tiempo_Tipo] => 3 [36] => 1 [MostrarInforme] => 1 [37] => 000000002EEFA536C0B8B44B9B44E513587FBA9BA4F22000 [IdOutLook] => 000000002EEFA536C0B8B44B9B44E513587FBA9BA4F22000 [38] => Nov 10 2011 11:32:54:000AM [UltimaModificacion] => Nov 10 2011 11:32:54:000AM [39] => ½ [ESPECIAL] => ½ ) )
如何将此数组转换为JSON对象?我测试了我在互联网上找到的所有示例代码但没有工作......
非常感谢。
编辑:
我做到了:
switch(json_last_error()){ case JSON_ERROR_NONE: echo' - JSON_ERROR_NONE'; 打破; 案例JSON_ERROR_DEPTH: echo' - JSON_ERROR_DEPTH'; 打破; 案例JSON_ERROR_STATE_MISMATCH: echo' - JSON_ERROR_STATE_MISMATCH'; 打破; case JSON_ERROR_CTRL_CHAR: echo' - JSON_ERROR_CTRL_CHAR'; 打破; 案例JSON_ERROR_SYNTAX: echo“\ r \ n \ r \ n - SYNTAX ERROR \ r \ n \ r \ n”; 打破; 案例JSON_ERROR_UTF8: echo' - JSON_ERROR_UTF8'; 打破; 默认: echo' - 未知的错误'; 打破; }
我的screeen打印出来了:
JSON_ERROR_UTF8
那么我怎么解决这个问题呢? pffff就是这样 令人沮丧...
答案 0 :(得分:0)
您的数据被提取为一个对象数组,请注意输出包含'[0] =&gt; stdClass对象'。您正在使用'mssql_fetch_object',而是使用'mssql_fetch_array'来将结果作为数组获取。
答案 1 :(得分:0)
似乎你有一些与charset相关的问题。
json_encode要求输入字符串是UTF-8
如何设置mySQL连接的charset,以及使用从正在获取数据的表的charset / collation到影响脚本的行为。