2011-01-11 22 views
17

Voy a insertar algunos artículos en mysql usando PHP.php mysql insertar en utf-8

Esta es la información phpMyAdmin:

Server: localhost via TCP/IP 
Server version: 5.0.85-community-nt 
Protocol version: 10 
User: [email protected] 
MySQL charset: UTF-8 Unicode (utf8) 

Aquí está mi información de la tabla:

Table Action Records 1 Type Collation Size Overhead 
article  10 InnoDB utf8_unicode_ci 16.0 KiB - 
1 table(s) Sum 10 InnoDB utf8_unicode_ci 16.0 KiB 0 B 

agrego

<?php header('Content-type:text/html; charset=utf-8'); ?> 

en la parte superior de mi código php, añadir mysql_query("set names 'utf-8'"); antes mysql_select_db("data",$db1);

pero los datos en el MySQL es todavía como

più freddi 

¿Cómo puedo mostrar los datos correctamente?

+0

¿Dónde ve los datos como ser incorrecto? Si está en algún programa cliente o en la consola, puede ser que no esté configurado para mostrar Unicode correctamente, mientras que los datos almacenados son de hecho correctos. – Mchl

+0

@Mchl, lo veo directamente en la tabla de phpMyAdmin –

+5

'utf8' no' utf-8' en los nombres de conjunto –

Respuesta

35

Elimina el guión. Debe ser:

mysql_query("SET NAMES utf8"); 
+1

también asegúrese de que toda la intercalación de la tabla sea 'utf8_unicode_ci' y lo mismo para el campo requerido también. –

+0

hola, si inserto alemania, italiano, frence, español, holandés, japonés, rusia. ¿Crees que elijo 'utf8_unicode_ci' o' utf8_general_ci' ser mejor? –

+0

Recomiendo mucho Unicode. Lo hemos usado para insertar árabe, inglés y todo funciona bien. Unicode cubre un tramo mayor y debería hacerlo bien. Aunque recomiendo probar primero todos los idiomas/obtenga algunos consejos de expertos –

2

tiene que especificar la codificación de caracteres en el cliente, así, utilizar

<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
+1

El OP ya está haciendo esto a través del encabezado ' ' – Amber

+1

Tiene que especificar esto en el cliente que enviará los datos que el PHP conseguirá colocar en la base de datos. La función php "header()" configurará el encabezado de la respuesta HTTP enviada. – Aston

+0

¿Quién te dijo eso? –

13

Uso siguiente código para insertar

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

Esto se trabajó muy bien en mi caso

+0

+1 por su sugerencia. –

+0

gracias por el punto – shihabudheen