Php y Sql: Carácteres especiales en SQL Server y Php

Según el “collation” de una base de datos tendremos mas o menos problemas con los caracteres especiales a la hora de hacer consultas del tipo DML (lenguaje de manipulación de datos). Por caracteres especiales nos referimos a la “ñ”, acentos, símbolos, etc.

Si trabajamos con php y sql server existen dos funciones php realmente útiles: utf8_decode, utf8_encode. La función decode la utilizaremos antes de realizar un insert o update, y lo que hace es “decodifica” los datos de  UTF-8 a ISO-8859-1, y  hace que nuestros datos se vean correctamente en la base datos con collation “spanish_ci_as”.  La función encode “codifica” los datos de ISO-8859-1 a UTF-8, y hace que los datos que recogemos de la base de datos (decodificados) se muestren correctamente por ejemplo en nuestra web. La manera de decodificar y codificar los datos es la siguiente:

//Decodificamos el nombre de usuario con acento
$nombre_usuario = utf8_decode("Álvaro");

//Realizamos el insert en sql server con collation spanish_ci_as
mssql_query("INSERT usuarios VALUES ('".$nombre_usuario."')");


...


//Obtenemos el nombre de usuario de la base de datos
$consulta = mssql_query("SELECT nombre FROM usuarios WHERE id = 15");

//Recorremos los resultamos y los almacenamos en la variable $datos
$datos = mssql_fetch_array($consulta);

//Recogemos la posición 0 de los datos obtenidos por la select y lo codificamos para poder mostrar el carácter especial con acento, guardamos el nombre dentro de $nombre_usuario
$nombre_usuario = utf8_encode($datos[0]);
Anuncios

2 comentarios en “Php y Sql: Carácteres especiales en SQL Server y Php

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s