bug #21485 [Process] Non ASCII characters disappearing during the escapeshellarg (GuillaumeVerdon)
This PR was submitted for the 3.2 branch but it was merged into the 2.7 branch instead (closes #21485).
Discussion
----------
[Process] Non ASCII characters disappearing during the escapeshellarg
If the LC_CTYPE is not set at UTF-8, the escapeshellarg() function will remove every non-ascii characters.
As it's usual in europe to have directories with non-ascii chars in their name (ex : ~/Vidéos) the function should throw an exception if we're trying to submit it an argument containing non-ascii param and the LC_CTYPE is not set to use UTF-8
| Q | A
| ------------- | ---
| Branch? | 2.7
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? |
| Fixed tickets |
| License | MIT
| Doc PR |
I had this issue while using the lib ffmpeg and giving it a path like "~/Vidéos" the "é" chars was disappearing from the command giving a RuntimeException.
The problem was my LC_CTYPE that wasn't set properly, I believe an exception should be raised before the RuntimeException to warn the user of that behavior
Commits
-------
3779f3f
[Process] Non ASCII characters disappearing during the escapeshellarg
This commit is contained in:
commit
01a0250d49
@ -71,7 +71,7 @@ class ProcessUtils
|
||||
return $escapedArgument;
|
||||
}
|
||||
|
||||
return escapeshellarg($argument);
|
||||
return "'".str_replace("'", "'\\''", $argument)."'";
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -43,6 +43,7 @@ class ProcessUtilsTest extends \PHPUnit_Framework_TestCase
|
||||
array("'<|>\" \"'\\''f'", '<|>" "\'f'),
|
||||
array("''", ''),
|
||||
array("'with\\trailingbs\\'", 'with\trailingbs\\'),
|
||||
array("'withNonAsciiAccentLikeéÉèÈàÀöä'", 'withNonAsciiAccentLikeéÉèÈàÀöä'),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user