2009-10-30 96 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'」嗎? –