Все, кажется починил.
Только понимания, почему оно сразу не сломалось, нет. А так, вроде бы, работает.
Забавные люди, эти разработчики языков. Взяли и выпилили из JS функцию escape(). Теперь там encodeURIComponent(), который нормально воспринимает UTF и имеет обратную функцию rawurldecode() в PHP.