Caracteres especiales

¿Cómo esta?
No me había dado cuenta de cuando traigo un dato de una consulta y la muestro en un campo de texto de la página o guardo datos a un archivo plano pasa lo siguiente: cuando son caracteres especiales Ñ, ñ etc me muestra un garabato diferente.
¿Hay alguna forma de que aparezca bien la información?
Agradezco la ayuda que me puedas brindar.

1 respuesta

Respuesta
1
No se a qué garabatos te refieres, si te cambia la letra 'ñ' por un único símbolo diferente como puede ser 'Ã' o similar, el problema quizá no esté en tu código sino en la configuración de idioma de tu ordenador. De todas forma me parece muy extraño, porque al introducir los datos te los pone bien.
Ponme el código para que lo revise y lo pruebe en mi ordenador, así descartamos que sea problema del idioma.
También puedes ir mirando las funciones de cadenas de caracteres que ofrece php. Las tienes en:
http://www.php.net/manual/es/ref.strings.php
Ahí tienes algunas funciones especiales como htmlentities o htmlspecialchars que te pueden ayudar.
Cordial saludo.
He intentado de todo y nada.
Este es el código, recuerda que me conecto a Sql Server.
<html>
<head>
<title>Adicionar Particular</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form name="form1" method="post" action="">
<table width="20%" border="1" align="center">
<tr>
<td><table width="5%" border="0" align="center" cellspacing="0">
<tr>
<td colspan="4"><div align="center"><font color="#00FF33" size="5" face="Verdana, Arial, Helvetica, sans-serif">Adicionar
Particular</font></div></td>
</tr>
<tr>
<td><div align="right">No Identificación</div></td>
<td>
<input name="NoIdent" type="text" id="NoIdent"
onKeyPress="if(event.keyCode==13){submit();} if(event.keyCode>=48 && event.keyCode<=57){} else{event.keyCode=8;}" value="<?php echo $_REQUEST['NoIdent']; ?>" size="10" maxlength="10">
<?php include "ValidaParticular.php";
if(isset($_REQUEST['NoIdent']))
{
$arr[0] = $_REQUEST['txtPriApel'];
$arr[1] = $_REQUEST['txtSegApel'];
$arr[2] = $_REQUEST['txtPriNombre'];
$arr[3] = $_REQUEST['txtSegNomb'];
$arr[4] = $_REQUEST['txtFechaNac'];
$VP_FacturaPart = ValidaFacturaPart($_REQUEST['NoIdent']);
if($VP_FacturaPart[0]!="")
{
echo "<script>";
echo "alert('Ya existe un particular creado con esta cédula');";
echo "document.forms.form1.NoIdent.value='';";
echo "document.forms.form1.NoIdent.focus();";
echo "</script>";
$campoFocus = "NoIdent";
}
else
{
$VL_PriApel = $arr[0];
$VL_SegApel = $arr[1];
$VL_PriNomb = $arr[2];
$VL_SegNomb = $arr[3];
$VL_FechaNac = $arr[4];
$campoFocus = "txtPriApel";
}
}
?>
</td>
<td><div align="right">Tipo Identificación</div></td>
<?php
$postTipIdent = $_POST['cbTipIdent'];
?>
<td><select name="cbTipIdent" size="1" id="cbTipIdent">
<option value="CC" <?php if ($postTipIdent=="CC") echo ' selected'; ?> >Cédula
Ciudadanía</option>
<option value="CE" <?php if ($postTipIdent=="CE") echo ' selected'; ?> >Cédula
de Extranjeria</option>
<option value="PA" <?php if ($postTipIdent=="PA") echo ' selected'; ?> >Pasaporte</option>
<option value="RC" <?php if ($postTipIdent=="RC") echo ' selected'; ?> >Registro
Civil</option>
<option value="TI" <?php if ($postTipIdent=="TI") echo ' selected'; ?> >Tarjeta
de Identidad</option>
<option value="AS" <?php if ($postTipIdent=="AS") echo ' selected'; ?> >Adulto
sin Identificación</option>
<option value="MS" <?php if ($postTipIdent=="MS") echo ' selected'; ?> >Menor
sin Identificación</option>
<option value="NU" <?php if ($postTipIdent=="NU") echo ' selected'; ?> >No.
Único Identificación</option>
</select></td>
</tr>
<tr>
<td><div align="right">Primer Apellido</div></td>
<td><input name="txtPriApel" type="text" id="txtPriApel" onKeyPress="if(event.keyCode==13 && document.forms.form1.txtPriApel.value!=''){document.forms.form1.txtSegApel.focus();}" value="<?php echo $VL_PriApel; ?>" size="20" maxlength="20"></td>
<td><div align="right">Segundo Apellido</div></td>
<td><input name="txtSegApel" type="text" id="txtSegApel" onKeyPress="if(event.keyCode==13){document.forms.form1.txtPriNombre.focus();}" value="<?php echo $VL_SegApel; ?>" size="20" maxlength="20"></td>
</tr>
<tr>
<td><div align="right">Primer Nombre</div></td>
<td><input name="txtPriNombre" type="text" id="txtPriNombre" onKeyPress="if(event.keyCode==13 && document.forms.form1.txtPriNombre.value!=''){document.forms.form1.txtSegNomb.focus();}" value="<?php echo $VL_PriNomb; ?>" size="20" maxlength="20"></td>
<td><div align="right">Segundo Nombre</div></td>
<td><input name="txtSegNomb" type="text" id="txtSegNomb" value="<?php echo $VL_SegNomb; ?>" onKeyPress="if(event.keyCode==13){document.forms.form1.txtCodDepto.focus();}" size="20" maxlength="20"></td>
</tr>
<tr>
<td><div align="right">Código Departamento</div></td>
<td><input name="txtCodDepto" type="text" id="txtCodDepto" onKeyPress="if(event.keyCode==13){ submit();} if(event.keyCode>=48 && event.keyCode<=57){} else{event.keyCode=8;}" value="<?php echo $_REQUEST['txtCodDepto']; ?>" size="2" maxlength="2">
<?php
if(isset($_REQUEST['txtCodDepto']) and $_REQUEST['txtCodDepto'])
{
include "conexion.php";
if(mssql_select_db ("db", $conexion))
{
$consul = mssql_query("select DepNombre from Departamentos where DepCodigo="
.$_REQUEST['txtCodDepto'],$conexion);
if(mssql_num_rows($consul)>0)
{
$reg = mssql_fetch_object($consul);
$VL_NombDepto = $reg->DepNombre;
$campoFocus = "txtCodMun";
}
else
{
echo "<script>";
echo "alert('No se encontro un Departamento asociado a este Código');";
echo "</script>";
$campoFocus = "txtCodDepto";
}
}
mssql_close();
}
?>
</td>
<td><div align="right">Nombre Departamento</div></td>
<td><input name="txtNombDepto" type="text" id="txtNombDepto" value="<?php echo $VL_NombDepto; ?>" size="25" maxlength="25" readonly></td>
</tr>
<tr>
<td><div align="right">Código Municipio</div></td>
<?php
$postZona = $_POST['cbZona'];
?>
<td><input name="txtCodMun" type="text" id="txtCodMun" onKeyPress="if(event.keyCode==13){submit();} if(event.keyCode>=48 && event.keyCode<=57){} else{event.keyCode=8;}" value="<?php echo $_REQUEST['txtCodMun']; ?>" size="3" maxlength="3"></td>
<?php
if(isset($_REQUEST['txtCodMun']) and ($VL_NombDepto!="") and $_REQUEST['txtCodMun'])
{
include "conexion.php";
if(mssql_select_db ("db", $conexion))
{
$consul = mssql_query("select MunNombre from Municipios where MunCodigo="
.$_REQUEST['txtCodMun']." and MunDpto=".
$_REQUEST['txtCodDepto'],$conexion);
if(mssql_num_rows($consul)>0)
{
$reg = mssql_fetch_object($consul);
$VL_NombMun = $reg->MunNombre;
$campoFocus="cbZona";
}
else
{
echo "<script>";
echo "alert('No se encontro un Municipio asociado al Departamento');";
echo "</script>";
$campoFocus = "txtCodMun";
}
}
mssql_close();
}
?>
<td><div align="right">Nombre Municipio</div></td>
<td><input name="txtNombMun" type="text" id="txtNombMun" value="<?php echo $VL_NombMun; ?>" size="20" maxlength="20" readonly></td>
</tr>
<tr>
<td> </td>
<td> </td>
<td><div align="right">Zona</div></td>
<td> <select name="cbZona" size="1" id="select2">
<option value="U" <?php if ($postZona=="U") echo ' selected'; ?> >Urbana</option>
<option value="R" <?php if ($postZona=="R") echo ' selected'; ?> >Rural</option>
</select></td>
</tr>
<tr>
<td><div align="right">Sexo</div></td>
<?php
$postSexo = $_POST['cbTipIdent'];
?>
<td><select name="cbSexo" size="1" id="cbSexo">
<option value="M" <?php if ($postSexo=="M") echo ' selected'; ?> >Masculino</option>
<option value="F" <?php if ($postSexo=="F") echo ' selected'; ?> >Femenino</option>
</select></td>
<td><div align="right">Fecha Nacimiento</div></td>
<td><input name="txtFechaNac" type="text" id="txtFechaNac"
onKeyPress="if(event.keyCode==13){if(isValidDate()==false){document.forms.form1.txtFechaNac.focus();}else{document.forms.form1.btnGuardar.focus();}} if(event.keyCode>=47 && event.keyCode<=57){} else{event.keyCode=8;} if(document.forms.form1.txtFechaNac.value==''){document.forms.form1.txtFechaNac.focus();}" value="<?php echo $VL_FechaNac; ?>" size="10" maxlength="10">
<font color="#009900" size="2" face="Verdana, Arial, Helvetica, sans-serif">(mm/dd/yyyy)</font></td>
</tr>
</table></td>
</tr>
</table>
<table width="20%" border="0" align="center">
<tr>
<td><table width="5%" border="0" align="center" cellspacing="0">
<tr>
<td>  </td>
<td><input name="btnGuardar" type="button" id="btnGuardar" value="Guardar" onClick="MM_validateForm('NoIdent','','RisNum','txtPriApel','','R','txtFechaNac','','R','txtCodDepto','','RisNum','txtNombDepto','','R','txtCodMun','','RisNum','txtNombMun','','R');if(document.MM_returnValue==true){document.forms.form1.submit();};return document.MM_returnValue">
<?php
if($_REQUEST['NoIdent'] && $_REQUEST['txtCodDepto'] && $_REQUEST['txtCodMun'] &&
$VL_PriApel && $VL_PriNomb && $VL_FechaNac && $VL_NombDepto && $VL_NombMun)
{
$Ins = mssql_query("Insert into ParticularRipsIps(PartNumIdenti,
PartTipoIdenti,PartPriApellido,PartSegApellido,
PartPriNombre,PartSegNombre,PartFechaNaci,PartSexo,
PartZona,PartCodigoDepto,PartCodigoMuni)
values('".$_REQUEST['NoIdent']."','".
$_REQUEST['cbTipIdent']."','".
$_REQUEST['txtPriApel']."','".
$_REQUEST['txtSegApel']."','".
$_REQUEST['txtPriNombre']."','".
$_REQUEST['txtSegNomb']."','".
$_REQUEST['txtFechaNac']."','".$_REQUEST['cbSexo'].
"','".$_REQUEST['cbZona']."',"
.$_REQUEST['txtCodDepto'].",".$_REQUEST['txtCodMun'].
")",$conexion);
if($Ins)
{
echo "<script>";
echo "alert('Se Guardo exitosamente los datos del Particular');";
echo "</script>";
mssql_close($conexion);
echo "<script language='JavaScript'>";
echo "window.close();";
echo "</script>";
$campoFocus = "NoIdent";
}
else
{
echo "<script>";
echo "alert('Se presentaron errores al Guardar');";
echo "</script>";
}
}
?>
</td>
<td><input name="btnCerrar" type="button" id="btnCerrar" onClick="window.close();" value="Cerrar">
</td>
<td> </td>
</tr>
</table></td>
</tr>
</table>
</form>
<?php
if($campoFocus)
{
echo "<script language='JavaScript'>";
echo "document.forms.form1.$campoFocus.focus();";
echo "</script>";
}
?>
</body>
</html>
Agradezco la ayuda que me brindas.
Al ejecutar el código obtengo los siguientes mensajes de error:
Notice: Undefined index: cbTipIdent
Notice: Undefined index: cbZona
Notice: Undefined index: NoIdent
Notice: Undefined variable: campoFocus
Significa que esas variables no están definidas. Esto es debido a que la página está pensada para venir de otra que tiene definidas esas variables. Supongo que tendrás otra página en la que defines esas variables y luego llama a esta.
Respecto a caracteres extraños, lo único que veo extraño es que los campos de texto se rellenan con "<br />". Viene a ser por lo mismo, usas como valor de los campos, por ejemplo en el primer campo: "<?php echo $_REQUEST['NoIdent']; ?>", y esa variable está sin definir.
No veo ningún otro ccódigo extraño. ¿Dónde te apatecen?
Saludos.
No me sale ese tipo de errores, yo tengo instalado el appserv-win32-2.4.0, no se si tienes instalado todo aparte, lo único raro que vi era con cbZona que tiene Id=Select2, cuando creo un usuario particular, ej: César Arturo Muñoz cuando hago la consulta o genero el archivo me sale C¥sar Arturo Mu|oz "caracteres extraños", pero eso es cuando lo muestro en los campos; disculpa pero te envíe solo una forma que guarda un solo registro, ¿puedo mandarte el que utilizo para mostrar y guardar es muy largo el código O te envío el de generar archivo plano que es más pequeño?
Agradezco la ayuda que me has brindado.
Con ese ejemplo ya veo lo que está ocurriendo. Estás escribiendo César con acento en la e. Por lo que parece cuando escribas cualquier palabra con acentos te mostrará caracteres extraños, da igual que lo escribas en mayúsculas o minúsculas. Incluso otros caracteres como la ñ te pueden salir diferentes.
El problema está en la configuración del idioma. Revisa el idioma que tienes en el sistema operativo, en el navegador de internet, y en apache comprueba las siguientes directivas:
DefaultLanguage
AddLanguage
LanguagePriority
AddDefaultCharset
Posiblemente tengas configurado un idioma que no te permite usar acentos.
Cordial saludo.
Revise el idioma del W98 y es Español(Mexico), en el httpd.conf no esta DefaultLanguage ni AddDefault Charset sin embargo coloque estas lineas
AddLanguage es .es
AddCharset ISO-8859-1 .iso-es
Pero no me ha solucionado nada.
¿Tienes alguna otra sugerencia?
Agradezco la ayuda que me facilitas.
Yo tengo lo siguiente:
AddLanguage es .es
AddDefaultCharset ISO-8859-1
AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset UTF-8 .utf8
En AddCharset tengo varios, pero son los que vienen en el archivo http.conf por defecto. Puedes probar a usar el archivo http.conf que viene con apache modificandole solo la ruta de los archivos y el nombre, puerto, etc, del servidor. Deja todas las opciones de idioma tal y como esten por defecto.
Otra opción puede ser usar otro editor de textos para crear los archivos, por ejemplo usa Word de Office, o prueba con WordPad. También puedes probar tus archivos en otro ordenador que tenga apache y php; y viceversa: crear los archivos en otro ordenador y probarlos en el tuyo.
No encuentro otra solución que no sea algo del idioma. Aunque solo sea por hacer la prueba, cambia de Español(Mexico) a Español(España) y pruebas a ver si sigue saliendo los mismos caracteres extraños.
Muchas gracias!
El manual esta para WXP pero no 98
Sabes, lo hice pero tampoco funciona; pero lo monte en un 2000 server, el apache y php y si funciona.
¿Cambiando de tema sabes como instalar Apache en W98?
Tengo instalado el AppServ pero cuando lo pase al server me generaba unos errores o no hacia funciones porque había unas variables que no utilizaba.
¿Esta pregunta la hago en otro post?
Saludos.
Apache se instala prácticamente igual en todas las versiones de windows. Te tienes que descargar el instalador de la versión de apache que quieras, lo ejecutas y te preguntará algunos datos como el nombre del servidor, un correo, etc. Los rellenas y ya lo tienes instalado. Ahora solo falto configurarlo modificando el archivo httpd.conf a tu gusto.
En la siguiente página tienes una guía sencilla para configurar apache con soporte para php y mysql.
http://servidor.hostrocket.com/#12

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas