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
Ejemplo de los datos agregados |
Descargar codigo de ejemplo
ACTUALIZACION: 07/11/2012
Publicado en tttony.blogspot.com
Publicar un comentario
1 comentario:
Muchas gracias me sirvio mucho esto
Publicar un comentario