Получить греческие буквы из базы данных MSSQL с помощью PHP - PullRequest
2 голосов
/ 17 ноября 2011

Я делал это раньше в .Net, но я немного новичок в PHP и могу использовать некоторую помощь.Я пытаюсь получить данные в PHP из базы данных MSSQL, некоторые из которых являются греческими буквами.Тип данных столбцов MSSQL - nvarchar, а греческие символы правильно отображаются в Management Studio;однако всякий раз, когда я получаю данные с помощью функции sqlsrv_query в php, я получаю кучу вопросительных знаков.

В функции sqlsrv_connect я пытался установить CharacterSet"=>"UTF-8, которая не работает.
Я пробовал iconv(), но не уверен, какие наборы использовать.
Я пробовал mb_detect_encoding(), и он вернул ASCIIASCII.

Вот пример кода:

public function _getOrderItemDetails($orderItemIds,$productTypeId){
    $params = explode(',', $orderItemIds);

    $sql = "select od.*, ofs.Sort
            from orderDetail od
                left join orderFieldSort ofs on ofs.fieldName = od.name and productTypeId in ($productTypeId)
            where orderItemid in (".rtrim(str_repeat('?,', count($params)),',').")
            order by ofs.sort";

   return $this->_compileResults($sql,'OrderDetail',$params);;
}

private function _compileResults($sql,$classType,$params ){       
    $result = sqlsrv_query($this->conn,$sql,$params);

    $arrayResult = array();
    while($orderObject = sqlsrv_fetch_object($result,$classType)){
        array_push($arrayResult, $orderObject);
    }
    return $arrayResult;
}

Любые предложения приветствуются.Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 19 июня 2016

У меня была точно такая же проблема с вами, поэтому, когда я искал решение, я увидел ваш вопрос. Ответ очень прост. Я предполагаю, что где-то в вашем коде вы подключаетесь к базе данных с помощью кода, подобного следующему:

$serverName = "YOUR_SERVER";
$connectionInfo = array("Database"=>"YourDatabase");
$link = sqlsrv_connect($serverName,$connectionInfo);
if(!$link ) {
    die('Could not connect: ' . mysql_error());
}

Чтобы отобразить греческие символы, необходимо изменить строку 2 с:

$connectionInfo = array("Database"=>"YourDatabase");

до:

$connectionInfo = array("Database"=>"YourDatabase","CharacterSet"=>"UTF-8");

, а остальной код остается прежним. Я думаю, что это решение было предложено @Graham к его собственному вопросу, и вот оно: вставка греческого символа в php по сравнению со студией управления сервером SQL

0 голосов
/ 18 сентября 2012

Пара вещей, которые можно попробовать.

1) Можете ли вы проверить, в какой именно кодировке находится ваша БД? Я рекомендую UTF8 для всего, поскольку он должен обрабатывать самый широкий диапазон символов. Насколько мне известно, "ASCIIASCII" не является кодировкой символов. Вы имеете в виду "ASCII"?

2) Попробуйте использовать mysql_set_charset('utf8');, изменив набор символов в соответствии с вашей кодировкой БД. Он "Устанавливает набор символов по умолчанию для текущего соединения." из текущего скрипта php. Официальные документы PHP

3) Это выброс, но где вы просматриваете результаты? Независимо от данных, возвращаемых из вашей БД, если вы просматриваете результаты в веб-браузере, вам нужно будет убедиться, что на странице установлен соответствующий кодовый чартер, заданный в заголовке, если это несоответствие из набора символов, возвращенного из вашей БД. это может привести к вопросительным знакам или бриллиантам ... Как правило, что-то вроде этого

   <head>
    <title>page title</title>
    <meta charset="UTF-8" />   
   </head>
...