Как я могу запретить функции escapeshellarg экранировать символы с акцентом?

Собственная функция PHP escapeshellarg экранирует символы с диакритическими знаками на моей машине

$stringWithAccentedChar = 'Hello à è World';
echo escapeshellarg($stringWithAccentedChar);
// Output : Hello World

Я пробовал с локалью US или FR, iso-8859-1 или UTF-8. Без изменений.

Я думаю, что это вопрос настроек, потому что каждый онлайн-тестер php, который я использовал, не избегает этих символов.

Как я могу предотвратить удаление акцентированного символа?


person Reynadan    schedule 06.07.2020    source источник


Ответы (1)


Когда escapeshellarg() удалял мои символы, отличные от ASCII, из строки UTF-8, добавление следующего устранило проблему:

<?php
setlocale(LC_CTYPE, "en_US.UTF-8");
?>

Источник: https://www.php.net/manual/en/function.escapeshellarg.php#99213

person wiktor    schedule 04.02.2021