В моем PHP-коде я создаю экземпляр COM-объекта из внешней DLL. Он работает нормально, за исключением того, что у меня проблема с получением строки JSON от одного из методов объекта com.
Если в строке нет нелатинских символов, JSON, который я получаю, является правильным, но если есть хотя бы один нелатинский символ, требующий кодировки UTF-8, этот JSON, полученный от COM-объекта, не поддается анализу в PHP. json_last_error() показывает проблему с кодировкой UTF-8.
Я уверен, что COM-объект возвращает правильно закодированные строки, поскольку он используется в других средах, и он работает нормально.
Когда я проверяю содержимое полученной строки, становится очевидным, что нелатинские символы "закодированы" странным и недопустимым образом. Когда я проверяю ту же строку в COM-объекте непосредственно перед ее отправкой в PHP, она правильно закодирована.
Похоже, что связь между объектами PHP и COM осуществляется с использованием кодировки, отличной от UTF-8, и это искажает строку.
Единственное, что я нашел, связанное с использованием UTF-8 с COM-объектами, это установка com.code_page=UTF-8 в разделе [COM] php.ini. Однако, независимо от того, как это установлено, у меня такое же плохое поведение.
Что еще мне нужно сделать, чтобы получить правильную закодированную строку UTF-8 из COM-объекта?