Hola a todos, estoy estudiando desarrollo de una aplicación android
con webservice json con php, al respecto primeramente tuve algunos
problemas con la función json_encode() pues este solo acepta
caracteres utf8 y retorna campo null las muchas palabras de español
(áéíóú ñ...etc). esto lo pude solucionar utilizando una funcion
modificada my_json_encode que esta como ejemplo en la guia de
referencia de php, solamente que a pesar de conseguir una cadena
limpia con todos los caracteres con tilde y ñ solo que al ejecutar
recuperar el servicio en android las letras problematicas son
mostradas como caracteres extraños....
por eso pregunto si alguien tendría algun ejemplo de como obtener esos
caracteres limpios en el android, he leido algo de utilizar
utf_ecode() al cagar el array para el json_encode() o algo sobre
htmlentities pero no encuentro como hacerlo...si alguien puede darne
una manoo....
con json_encode consigo esta cadena
{"users":[{"user":
{"user_id":"1","user_name":null,"user_picture":"","user_email":"
leod...@hotmail.com","user_phone_number":"0983426892","user_birthday":"1983-01-23","user_alias":"leodufer","user_pass":"leo1203456","user_status":"0"}}]}
y esta es la funcion my_json_encode
function my_json_encode($in) {
$_escape = function ($str) {
return addcslashes($str, "\v\t\n\r\f\"\\/");
};
$out = "";
if (is_object($in)) {
$class_vars = get_object_vars(($in));
$arr = array();
foreach ($class_vars as $key => $val) {
$arr[$key] = "\"{$_escape($key)}\":\"{$val}\"";
}
$val = implode(',', $arr);
$out .= "{{$val}}";
}elseif (is_array($in)) {
$obj = false;
$arr = array();
foreach($in AS $key => $val) {
if(!is_numeric($key)) {
$obj = true;
}
$arr[$key] = my_json_encode($val);
}
if($obj) {
foreach($arr AS $key => $val) {
$arr[$key] = "\"{$_escape($key)}\":{$val}";
}
$val = implode(',', $arr);
$out .= "{{$val}}";
}else {
$val = implode(',', $arr);
$out .= "[{$val}]";
}
}elseif (is_bool($in)) {
$out .= $in ? 'true' : 'false';
}elseif (is_null($in)) {
$out .= 'null';
}elseif (is_string($in)) {
$out .= "\"{$_escape($in)}\"";
}else {
$out .= $in;
}
return "{$out}";
}
con lo cual se consigue esto
{"users":[{"user":{"user_id":"1","user_name":Oscar Leonardo Duarte
Fernández,"user_picture":"","user_email":"
leod...@hotmail.com","user_phone_number":"0983426892","user_birthday":"1983-01-23","user_alias":"leodufer","user_pass":"leo1203456","user_status":"0"}}]}
pero en el adv aparece los caracteres extraños
https://lh6.googleusercontent.com/-5bXNSrWUHBg/Tl48rDh_fsI/AAAAAAAAByk/P8VenUXHXeI/s640/android.png