2009-10-30 3 views
10

Alles ist in der Frage: Ich habe ein PHP-Skript, das eine UTF-8-Datei ist. In diesem Skript möchte ich dies tun:PHP UTF-8 zu Windows Befehlszeilencodierung

<? 
    echo "âêïû\n"; 
    ?> 

Wenn ich es in einer Windows-Eingabeaufforderung betreibe ich diese:

C:\php>php -c C:\WINDOWS\php.ini -f mysqldump.php 
âêïû 
C:\php> 

Ich habe die richtige Umwandlungsschema finden nicht in der Lage gewesen. Ich habe auch diesen Code ausprobiert:

$tab = mb_list_encodings(); 
foreach ($tab as $enc1) { 
    foreach ($tab as $enc2) { 
    $t=mb_convert_encoding("âêïû\n", $enc1, $enc2); 
    if (strlen($t)<14) { 
     echo $enc1." ".$enc2." = ".$t."\n"; 
    } 
    } 
} 

Und ich fand nicht die richtige Konvertierung!

Jede Hilfe wäre sehr

Antwort

7

Sie bringen mich auf dem richtigen Weg, aber es gab ein Problem kinddof (Ich liebe Windows \ o /):

C:\php>chcp 65001 
Page de codes active : 65001 
C:\php>php -c C:\WINDOWS\php.ini -f mysqldump.php | more 
Mémoire insuffisante. 

Mémoire insuffisante = nicht genügend Speicher vorhanden.

Wenn ich versuche,

C:\php>chcp 1252 
C:\php>php -c C:\WINDOWS\php.ini -f mysqldump.php 
C:\php>ééîîïïÂÂÂÂâûü 

es funktioniert. Nur Gott weiß warum. Aber es funktioniert. Danke, dass du mich auf die richtige Spur gebracht hast !!

Durch die Art und Weise des PHP-Code gehen richtig UTF8 Aufforderung zu befehlen zu bilden ist:

echo mb_convert_encoding($utf8_string, "pass", "auto"); 
+0

Du bist sicher, dass deine 'mysqldump.php' UTF-8 kodiert ist? –

+0

μYep Ich bin mir sicher, ich benutze es auf www.acarat.com, die volle utf-8-Site ist –

+1

Gott weiß nicht warum! – markus

17

Das Problem erkannt wird, ist Windows-cmd Linie nicht standardmäßig UTF8 unterstützt. Von diesem link, wenn Sie diese

  1. Öffnen Sie eine Eingabeaufforderung
  2. Ändern Sie die Eigenschaften des Fensters folgen etwas neben der Standard-Rasterschriftart verwenden. Die Lucida Console TrueType-Schriftart scheint gut zu funktionieren.
  3. Run "chcp 65001" von der Eingabeaufforderung

Sie sollten die Ausgabe utf8 der Lage sein.

+0

+1 Gut zu wissen, dass Sie die Codierung in der Shell ändern können –

+0

Okay, ich habe versucht, „chcp 65001“ . Jetzt jedes Mal, wenn ich "php -c C: \ WINDOWS \ php.ini -f mysqldump.php | mehr" ausführen, erhalte ich einen "Nicht genügend Speicherfehler". Dann versuch ich ohne "| more" (das war zu riskant für Windows schätze ich grrr) und das skript stoppt sich am anfang ... –

+0

kannst du es einfach versuchen "echo hallo world ';" –