2011-01-11 5 views
17

Ich werde in einige Artikel in MySQL mit PHP einfügen.php mysql in utf-8 einfügen

Dies sind Informationen 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) 

Hier ist meine Tabelleninformationen:

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 

I

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

in der Spitze von meinem PHP-Code, fügen mysql_query("set names 'utf-8'"); vor mysql_select_db("data",$db1);

aber in der mysql die Daten noch

wie
più freddi 

Wie kann ich die Daten korrekt?

+0

Wo sehen Sie die Daten als falsch zu sein? Wenn es sich in einem Clientprogramm oder in einer Konsole befindet, ist es möglicherweise nicht so konfiguriert, dass Unicode korrekt angezeigt wird, obwohl die gespeicherten Daten tatsächlich korrekt sind. – Mchl

+0

@Mchl, ich sehe es direkt in der Tabelle von phpMyAdmin –

+5

'utf8' nicht' utf-8' in Set-Namen –

Antwort

35

des Bindestrich Befreien Sie sich. Es sollte sein:

mysql_query("SET NAMES utf8"); 
+1

auch sicherstellen, dass alle Ihre Tabelle Sortierung sind "utf8_unicode_ci" und Gleiches gilt für das erforderliche Feld. –

+0

hi, wenn ich deutschland, italienisch, frence, spanisch, holländisch, japanisch, rusia einfüge. denkst du ich wähle "utf8_unicode_ci" oder "utf8_general_ci" besser? –

+0

Ich würde Unicode sehr empfehlen. Wir haben es verwendet, um arabisch, Englisch und alles funktioniert gut. Unicode deckt eine größere Spannweite ab und sollte Ihnen gut tun. Obwohl empfohlen, zuerst alle Sprachen zu testen/einen Expertenrat zu bekommen –

2

Sie haben auch die Zeichencodierung auf dem Client anzugeben, verwenden

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

Das OP macht das schon über ' ' – Amber

+1

Sie müssen dies auf dem Client angeben, der die Daten übermittelt, die der PHP in die Datenbank bringen soll. Die PHP-Funktion "header()" setzt den Header der gesendeten HTTP-Antwort. – Aston

+0

Wer hat das gesagt? –

13

Verwenden Sie folgenden Code für

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); 

Einsetzen Dies funktioniert gut in meinem Fall

+0

+1 für Ihren Vorschlag. –

+0

danke für Punkt – shihabudheen