По какой-то причине последний символ строки UTF8 запутывается, но только на linux. Отлично работает на windows. Вот код:
<?php
header('Content-type: text/plain;Charset=UTF-8;');
$datasource = 'DRIVER=/usr/sap/hdbclient/libodbcHDB.so;SERVERNODE=myserver:30041;CHAR_AS_UTF8=TRUE;';
$username = "myuser";
$password = "mypass";
$conn = odbc_connect($datasource, $username, $password, SQL_CUR_USE_ODBC);
if (!($conn)) {
exit("Connection Failed: " . $conn);
}
else {
$sql = 'select * from sltschema.t141t';
$rs = odbc_exec($conn,$sql);
if (!$rs) {
exit("Error in SQL");
}
while ($rec=(array)odbc_fetch_array($rs)) {
echo json_encode($rec).PHP_EOL;
break;
}
odbc_close($conn);
}
?>
Вот результаты на моем CENTOS Linux поле (обратите внимание на последний символ в MTSTB)
{
MANDT: "000",
SPRAS: "1",
MMSTA: "01",
MTSTB: "因采购/仓库而被冻hp",
ZMODIFIEDTS: "20200120110440737"
}
Вот результаты на моем Windows Поле (только измененный DRIVER = {HDBODBC} в источнике данных)
{
MANDT: "000",
SPRAS: "1",
MMSTA: "01",
MTSTB: "因采购/仓库而被冻结",
ZMODIFIEDTS: "20200120110440737"
}
Так что каким-то образом только последний символ испортился.
Есть предложения?
PS: I Я использую версию 2.4.182.1579711187 драйвера HDBclient и пробовал версию 2.0.62.1478878744 с той же проблемой.