Si vas a copiar

.. y pegar este post en tu web o blog personal, por favor te pido que coloques el link del post de donde lo copiastes:

Fuente:

PHP5 & MySQL5 y los charsets UTF-8

23 de enero de 2009 1 comentario:
 Iñtërnâtiônàlizætiøn

Esta vez les voy ayudar a presentar bien los caracteres no latinos como: arabe, chino, koreano, ruso, etc.

Antes de empezar tu Sistema Operativo sea cual sea debe soportar esos caracteres.

NOTA: la mayoria de los servidores son basados en GNU/Linux y ya deberia de soportar caracteres Unicodes, esta configuracion es para Windows pero tambien es valida para GNU/Linux


Las pruebas las hago en:

Windows 7 x64 Ultimate
PHP 5.2.6 (es la que use, pero pueden descargarse el ultimo aqui) **OBSOLETO**
Usen la ultima version de php

NOTA: en php.net recomiendan usar las version VC6 de php 5.2.x con Apache 1 y Apache 2

Enfatizan que NO deben usar la version VC9 con apache 1 ni apache 2

Do NOT use VC9 version with apache.org binaries


MySQL 5.0.51 Community Edition (descargue aqui la ultima version)

Para que PHP y MySQL muestren sin problemas los caracteres debes tener en cuenta esto:

Guarda el archivo .php con codificacion utf-8

Edita el archivo php.ini:

default_charset = "utf-8"

Si no puedes editar el archivo php.ini escribe esto en el archivo .htaccess:

php_value default_charset utf-8

Si no tienes acceso al archivo .htaccess coloca esto al principio de tus scripts php:


<?php

ini_set("default_charset", "utf-8");

?>
 
 
ATENCION!!
La funciones mysql_* son obsoletas, asi que no usar
Para ello usen las funciones mysqli_* o la clase PDO

Escribe esto en el archivo que conecta con el servidor MySQL:


<?php

// Recuerda las funciones mysql_* es obsoleta
$conexion=mysql_connect("localhost","root","password");
mysql_set_charset("utf8");

// Usando PDO y php < 5.3.6
$pdo= new PDO('mysql:host=localhost;dbname=test','root', 'password');
$pdo->exec("set names utf8");

// Usando PDO y php >= 5.3.6
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', 'password');

?>

Otras alternativas:

<?php

// ... conectar con MySQL aqui ....
// luego..

mysql_query("SET NAME 'utf8'");
mysql_query("SET CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'");

?>


<?php

// http://php.net/manual/es/function.mysql-set-charset.php

mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn);

?>


Tambien debes establecer tus bases de datos, tablas y columnas con el cotejamiento: utf8_general_ci

Si quieres mostrar los datos pero quieres parsear ciertos tags como <> " usa la funcion htmlspecialchars() no uses htmlentities() porque cambiara el resultado

Otra cosa importante es el HTML que tambien debes colocar este meta tag:

<meta equiv="Content-Type" content="text/html; charset=utf-8">


Aqui les tengo un ejemplo hecho en php, contiene dos archivos, utf8.php y prueba.sql

NOTA: antes de ejecutar el archivo utf8.php debes importar el archivo prueba.sql a la base de datos llamada: test (que viene creada por defecto en MySQL), este archivo .sql crea la tabla prueba con dos campos: id y text y luego agrega unos datos de prueba escrito en varios idiomas, todo esto lo puedes hacer con phpMyAdmin

phpMyAdmin datos de ejemplo
Ejemplo de los datos agregados


Descargar codigo de ejemplo


ACTUALIZACION: 07/11/2012


Publicado en tttony.blogspot.com

Publicar un comentario

1 comentario:

Anónimo dijo...

Muchas gracias me sirvio mucho esto

Buscar en el Blog



PUBLICIDAD