PHP 코드에서 외부 DLL로부터 COM 개체를 인스턴스화했습니다. com 개체 메서드 중 하나에서 JSON 문자열을받는 데 문제가 있다는 것을 제외하고는 제대로 작동합니다.PHP에서 COM 객체를 사용하여 UTF-8 문자열을 가져 오는 방법은 무엇입니까?
문자열에 비 라틴 문자가없는 경우 얻을 수있는 JSON은 정확하지만 UTF-8 인코딩을 필요로하는 비 라틴 문자가 하나 이상 있으면 COM 개체에서 수신 한 JSON을 구문 분석 할 수 없습니다. PHP. json_last_error()는 UTF-8 인코딩 문제를 보여줍니다.
COM 개체가 다른 환경에서 사용되는 것처럼 올바르게 인코딩 된 문자열을 반환한다는 것은 긍정적입니다.
받은 문자열 내용을 확인할 때 비 라틴 문자가 이상하고 잘못된 방식으로 "인코딩 됨"인 것은 분명합니다. COM 객체 내에서 동일한 문자열을 검사 할 때 PHP로 전송되기 바로 전에 올바르게 인코딩됩니다.
PHP와 COM 객체 통신이 아닌 UTF-8 인코딩을 사용하여 문자열이 엉망인 것처럼 보입니다.
COM 개체에서 UTF-8을 사용하는 것과 관련된 유일한 일은 php.ini의 [COM] 섹션에 com.code_page = UTF-8을 설정하는 것입니다. 그러나 이것이 어떻게 설정되었는지에 관계없이 나는 똑같은 나쁜 행동을합니다.
COM 개체에서 적절한 인코딩 된 UTF-8 문자열을 얻으려면 어떻게해야합니까?
COM에서는 문자열이 UTF-16을 사용하는 BSTR 일 가능성이 큽니다. 하지만 브리징 기능에서 코드 변환하는 방법을 찾았습니다. –
Doc는 기본값이 ANSI라고 말하지만 UTF-16이 다른 것일 수도 있습니다. 텍스트 편집기가 해당 문자열을 제대로 표시 할 수 있으므로 처리 방법을 알았 기 때문입니다. –