2009-10-30 12 views
10

Wszystko jest w pytaniu: Mam skrypt PHP, który jest plikiem UTF-8. W tym skrypcie chcę to zrobić:Kodowanie UTF-8 do Windows w linii poleceń

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

Gdybym go uruchomić w wierszu systemu Windows uzyskać to:

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

Nie byłem w stanie znaleźć odpowiedni system konwersji. Próbowałem również tego kodu:

$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"; 
    } 
    } 
} 

I nie znalazłem właściwego nawrócenia!

Każda pomoc będzie bardzo mile widziane

Odpowiedz

7

umieścić mnie na właściwe tory, ale nie było kinddof problem (kocham \ o/Windows):

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 = brak wystarczającej ilości pamięci.

Gdy próbuję

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

to działa. Tylko Bóg wie dlaczego. Ale działa. Dzięki za ustawienie mnie na właściwym tropie !!

Nawiasem mówiąc kod php, aby przejść prawidłowo tworzyć UTF8 do wiersza polecenia jest:

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

Jesteś pewien, że twoje' mysqldump.php' jest kodowane w UTF-8? –

+0

μYep Jestem pewien, używam go na www.acarat.com, który jest pełną stroną utf-8 –

+1

Bóg nie wie, dlaczego! – markus

17

Problemem jest Windows cmd linia domyślnie nie obsługuje UTF8. Z tego link, jeśli się te

  1. Otwórz okno wiersza polecenia
  2. zmienić właściwości okna użyć czegoś oprócz domyślnej czcionki rastrowej. czcionka True Type Lucida Console wydaje się działać dobrze.
  3. Run "chcp 65001" z wiersza poleceń

Powinieneś być w stanie wyjściowym utf8.

+0

+1 Dobrze wiedzieć, że można zmienić kodowanie w powłoce –

+0

Ok próbowałem „chcp 65001” . Teraz za każdym razem, gdy uruchomię "php -c C: \ WINDOWS \ php.ini -f mysqldump.php | more" otrzymuję komunikat "Błąd braku pamięci". Potem próbuję bez "| more" (to było zbyt ryzykowne dla Windows, chyba grrr), a skrypt zatrzymuje się na samym początku ... –

+0

czy możesz spróbować "echo" witaj na świecie ";"? –