Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Command line character encoding from PHP's exec()

I'm trying to pass UTF-8 text as an argument to a command line program using php's exec function and have been having problems. I suspect it's due to character encoding issues.

When I call locale charmap from the command line, I get: UTF-8.

But when I do:

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

I get

ANSI_X3.4-1968

How can I change this? It's not something I want to set once -- I'll be working with different languages / encodings potentially so each call to exec() could require a different one. But even knowing how to set it to UTF-8 once would be helpful.

like image 668
philfreo Avatar asked Aug 04 '10 22:08

philfreo


1 Answers

Prefix the command with LANG = <language>.UTF8.

Example:

$ 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

You should have the locale installed.

like image 192
Artefacto Avatar answered Sep 19 '22 00:09

Artefacto