Ver Mensaje Individual
  #6 (permalink)  
Antiguo 03/01/2006, 20:34
paranoic
 
Fecha de Ingreso: octubre-2005
Mensajes: 15
Antigüedad: 18 años, 6 meses
Puntos: 0
La siguiente funcion, aunque un poco burda, arregla problemas con la mayoria de codificaciones, de todas formas, es conveniente usar encodeURIComponent() o encodeURI() o escape() de Javascript antes de enviar al servidor, claro:

Código:
function crossUrlDecode($source) {
	$decodedStr = '';
	$pos = 0;
	$len = strlen($source);
	while ($pos < $len) {
		$charAt = substr ($source, $pos, 1);
		if ($charAt == 'Ã') {
			$char2 = substr($source, $pos, 2);
			$decodedStr .= htmlentities(utf8_decode($char2),ENT_QUOTES,'ISO-8859-1');
			$pos += 2;
		}
		elseif(ord($charAt) > 127) {
			$decodedStr .= "&#".ord($charAt).";";
			$pos++;
		}
		elseif($charAt == '%') {
			$pos++;
			$hex2 = substr($source, $pos, 2);
			$dechex = chr(hexdec($hex2));
			if($dechex == 'Ã') {
				$pos += 2;
				if(substr($source, $pos, 1) == '%') {
					$pos++;
					$char2a = chr(hexdec(substr($source, $pos, 2)));
					$decodedStr .= htmlentities(utf8_decode($dechex . $char2a),ENT_QUOTES,'ISO-8859-1');
				}
				else {
					$decodedStr .= htmlentities(utf8_decode($dechex));
				}
			}
			else {
				$decodedStr .= $dechex;
			}
			$pos += 2;
		}
		else {
			$decodedStr .= $charAt;
			$pos++;
		}
	}
	return $decodedStr;
}