Есть
правила, по которым кодируются символы в URI. Одни символы могут использоваться как есть, а другие - обязательно должны преобразовываться в percent-encoded варианты.
И хотя символы
{
,
}
и
|
не обязательно преобразовывать - некоторые системы это делают на всякий случай (при этом обычно все нормально работает).
У меня для вас хорошая новость: арache и PHP сами по себе не пребразовывают эти символы, если их об этом не просить.
Ищите в какой момент у вас происходит это преобразование, и правьте.