2009-10-30 45 views
10

一切都在问题:我有一个PHP脚本是一个UTF-8文件。 在这个脚本我想这样做:PHP UTF-8到Windows命令行编码

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

如果我在Windows提示符下运行它,我得到这个:

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

我一直没能找到合适的转换方案。我也试过这个代码:

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

而我没有找到正确的转换!

任何帮助,将不胜感激

回答

7

你把我在正确的轨道上,但有kinddof一个问题(我爱的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. 

备忘录insuffisante =没有足够的内存。

如果我尝试

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

它的工作原理。只有上帝知道为什么。但它的工作。感谢您将我放在正确的轨道上!

顺便说PHP代码去正确地形成UTF8到命令提示符:

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

你确定你的'mysqldump.php'是UTF-8编码? –

+0

μ我肯定,我在www.acarat.com上使用它,它是完整的utf-8站点 –

+1

上帝不知道为什么! – markus

17

的问题是在默认情况下不支持UTF8的Windows CMD线。从这个link,如果你遵循这些

  1. 打开命令提示符窗口
  2. 改变窗口的属性,以使用除了默认的光栅字体的东西。他Lucida控制台True Type字体似乎运作良好。
  3. 运行 “的chcp 65001” 从命令提示符

你应该能够输出UTF8。

+0

+1很好的了解,你可以在shell –

+0

好吧,我已经试过发生“chcp 65001”更改编码。现在我每次运行“php -c C:\ WINDOWS \ php.ini -f mysqldump.php | more”我收到“内存不足错误”。然后,我尝试没有“|更多”(这对Windows来说太冒险了,我猜grrr),脚本在一开始就停下来了...... –

+0

你可以试试“echo'hello world'”吗? –