2010-08-04 24 views
6

Tôi đang cố chuyển văn bản UTF-8 làm đối số cho chương trình dòng lệnh bằng chức năng exec của php và đã gặp sự cố. Tôi nghi ngờ đó là do vấn đề mã hóa ký tự.Mã hóa ký tự dòng lệnh từ lệnh exec của PHP()

Khi tôi gọi locale charmap từ dòng lệnh, tôi nhận được: UTF-8.

Nhưng khi tôi làm:

<?php echo exec('locale charmap'); ?> 

tôi nhận được

ANSI_X3.4-1968

Làm thế nào tôi có thể thay đổi điều này? Nó không phải là một cái gì đó tôi muốn thiết lập một lần - Tôi sẽ làm việc với các ngôn ngữ khác nhau/mã hóa có khả năng như vậy mỗi cuộc gọi đến exec() có thể yêu cầu một cái khác nhau. Nhưng thậm chí biết cách đặt nó thành UTF-8 một lần sẽ hữu ích.

Trả lời

12

Làm tiền tố lệnh bằng LANG = <language>.UTF8.

Ví dụ:

 
$ php -r "echo exec('LANG=\"en_US.UTF8\" locale charmap');" 
UTF-8 
$ php -r "echo exec('LANG=\"en_US.iso88591\" locale charmap'); 
ISO-8859-1 

Bạn nên đã cài đặt locale.

+0

Trình tiết kiệm cuộc sống. Nhiều đánh giá cao. –

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