2011-09-27 25 views
6
C:\Users\Kolink>php -r "echo 'é';" 
Ú 

C:\Users\Kolink>echo é 
é 

ご覧のとおり、éを出力するプログラムはÚになりますが、echoコマンドを使用すると目的の文字が得られます。cmdの文字セット

また、正しい文字を出力するためにPHP(スクリプトの最初のコマンドかもしれません)を設定できますか?

+0

まあ、エコーはコピー/ペースト機能のほうが多いようです。私はPHPについてはわからない。 – Coffee

答えて

3

CMD.exeはPHPとは異なるコードページで動作します。ところで、それはまた、デフォルトのWindowsコードページとは異なるコードページです。これは、古いMS-DOSプログラムとの互換性のためです。私の国では、WindowsはWindows-1250を使用し、cmd.exeはDOS Latin2を使用します。イギリスでは、これはそれぞれWindows-1252とDOS Latin1だろうと思います。

同じ結果を得るには、PHPとcmd.exeで同じコードページを使用する必要があります。 PHPで使用されているコードページを確認し、cmd.exeを同じコ​​ードページに設定します。これを行うには、mode con sp select=<codepagenumber>またはchcp <codepagenumber>のコマンドを使用します。これにより、cmd.exeの現在のインスタンスのコードページのみが変更されます。ここで

は、いくつかの典型的なコードページとその番号の短いリストです:

DOS Latin1 850 
DOS Latin2 852 
Windows-1250 1250 
Windows-1252 1252 
UTF-8   65001 
ISO-8859-1 28591 
ISO-8859-2 28592 

@Christopheヴァイスはコメントで指摘したように、あなたはCode page identifiersページで他のコードページの識別子を検索することができます。

+1

ありがとう、それは非常に便利だった!しかし、ISO- *コードページ番号は私のためには機能しませんでした。 [コードページ識別子](https://msdn.microsoft.com/en-us/library/windows/desktop/dd317756%28v=vs.85%29.aspx)には、「iso-8859-1」 '28591'と' ISO-8859-2'は '28592'です。 –

+0

ありがとうございます!私は自分の答えを修正し、あなたが見つけたページへのハイパーリンクを追加しました。 – MBu