Создаем com объект в php. Все работает гладко.
$obj = new COM("blablabla.blala");
if ($obj ->Init()) {
$result = $obj ->Recognize('C:/1.jpg'");
}
$result если разложить мы увидим это:
aaa[]:
0: [фамилия, Иванов]
0: "фамилия"
1: "Иванов"
1: [отчество, Борисович]
0: "отчество"
1: "Борисович"
2: "64" <-- Блин, что тут это за ерунда??? 64 в COM php?
3: [гражданство, рф]
0: "гражданство"
1: "рф"
Мы видим, что у второго индекса просто «64».
Делаем аналогично, подключаем этот же самый COM объект но не через php, а через Powershell. Результат получаем такой:
aaa[]:
0: [фамилия, Иванов]
0: "фамилия"
1: "Иванов"
1: [отчество, Борисович]
0: "отчество"
1: "Борисович"
2: [Имя, Александр] <-- Все тут отлично!!
0: "Имя"
1: "Александр"
3: [гражданство, рф]
0: "гражданство"
1: "рф"
ТО есть все отлично через powershell. Как так происходит? Кодировка массива UTF16LE — не ужели массив бьется в php_com_dotnet.dll? Никакие игры с кодировками не помогают, бьется часть массива, что с этим делать вообще не представляю.