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

C:\Users\Kolink>echo é 
é 

Như bạn có thể thấy, một chương trình xuất ra một é kết quả trong một Ú, nhưng cách sử dụng lệnh echo cung cấp cho các nhân vật mong muốn.cmd của thiết

Và, tôi có thể định cấu hình PHP (có thể một số lệnh ở đầu tập lệnh) để xuất ký tự chính xác không?

+0

Vâng, tiếng vọng dường như có nhiều chức năng sao chép/dán. Tôi không chắc về PHP .. – Coffee

Trả lời

3

CMD.exe hoạt động trong các trang mã khác với PHP. Bằng cách này, nó cũng là mã khác nhau hơn so với mã mặc định của Windows. Điều này là để tương thích với các chương trình MS-DOS cũ hơn. Ở quốc gia của tôi, Windows sử dụng Windows-1250 và cmd.exe sử dụng DOS Latin2. Tôi cho rằng ở Anh, đây sẽ là Windows-1252 và DOS Latin1 tương ứng.

Để có được kết quả tương tự, bạn phải sử dụng cùng một trang mã trong PHP và trong cmd.exe. Kiểm tra những gì codepage được sử dụng bởi PHP và thiết lập cmd.exe cho cùng một mã. Để thực hiện việc này, hãy sử dụng lệnh sau: mode con sp select=<codepagenumber> hoặc chcp <codepagenumber>. Điều này sẽ thay đổi mã chỉ cho phiên bản hiện tại của cmd.exe.

Dưới đây là một danh sách ngắn của một số codepage điển hình và số lượng của chúng:

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

Như @Christophe Weis đã chỉ ra trong các ý kiến, bạn có thể tra cứu các định danh của trang mã khác tại Code page identifiers trang.

+1

Cảm ơn bạn, điều đó rất hữu ích! Nhưng số trang mã ISO- * không hiệu quả với tôi. Trong [Mã định danh trang] (https://msdn.microsoft.com/en-us/library/windows/desktop/dd317756%28v=vs.85%29.aspx), nó được ghi là 'iso-8859-1' có '28591' và 'ISO-8859-2' có' 28592'. –

+0

Cảm ơn bạn rất nhiều! Tôi đã sửa câu trả lời của mình và thêm siêu liên kết vào trang bạn tìm thấy. – MBu

Các vấn đề liên quan