2009-10-30 7 views
10

Todo está en la pregunta: Tengo un script Php que es un archivo UTF-8. En este guión que desee hacer esto:PHP UTF-8 a la línea de comandos de Windows codificación

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

Si me quedo en una solicitud de Windows me sale esto:

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

no he sido capaz de encontrar el esquema de conversión derecha. También probé este código:

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

¡Y no encontré la conversión correcta!

Cualquier ayuda sería muy apreciada

Respuesta

7

que me puso en el camino correcto, pero había un problema kinddof (Me encanta 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 = No hay suficiente memoria.

Si intento

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

funciona. Sólo Dios sabe porqué. Pero funciona. Gracias por ponerme en el camino correcto !!

Por cierto, el código php para ir adecuadamente formar UTF8 al símbolo del sistema es:

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

¿Estás seguro de que tu' mysqldump.php' está codificado en UTF-8? –

+0

μYep Estoy seguro, lo estoy usando en www.acarat.com, que es el sitio completo de utf-8 –

+1

¡Dios no sabe por qué! – markus

17

El problema es la línea cmd de Windows por defecto no soporta UTF-8. A partir de este link, si usted sigue estos

  1. Abra una ventana de símbolo del sistema
  2. cambiar las propiedades de la ventana para utilizar algo más que la fuente de trama predeterminado. La fuente Lucida Console True Type parece funcionar bien.
  3. Ejecutar "65001 chcp" desde el símbolo del sistema

Usted debe ser capaz de UTF-8 de salida.

+0

+1 bueno saber que se puede cambiar la codificación en la cáscara –

+0

bien he intentado "65001 chcp" . Ahora, cada vez que ejecuto "php -c C: \ WINDOWS \ php.ini -f mysqldump.php | más" Obtengo un "Error de falta de memoria". Luego lo intento sin el "| more" (esto era demasiado arriesgado para Windows, supongo que grrr) y el script se detiene al principio ... –

+0

¿puedes intentar simplemente "echo 'hello world';"? –

Cuestiones relacionadas