PHP получает арабский контент от SQL SERVER - PullRequest
1 голос
/ 15 июля 2010

Как получить арабский контент при запуске MSSQL_QUERY?

Это выглядит как ????, я пытался сделать это:

$res = mssql_query($q);
$row = mssql_fetch_row($res)
echo iconv("unicode", "utf-8", $row[0])

но в этом случае оно показывает значение в виде китайских букв как 潬穬

Любое предложение высоко ценится

Ответы [ 3 ]

2 голосов
/ 20 апреля 2011

Просто используйте типы данных Unicode. Типы данных Unicode: nchar, nvarchar, nvarchar (max) и ntext, и все строки Unicode должны начинаться с заглавной буквы N.

INSERT INTO TableName (ColumnName) values(N'Arabic Text')
0 голосов
/ 01 марта 2012

Сначала попробуйте установить драйверы sqlsrv, найденные на http://msdn.microsoft.com/en-us/library/cc793139%28v=sql.90%29.aspx. После правильного следования инструкциям при подключении к серверу sql используйте:

$connArr = array(
    "Database"     => $dPconfig['dbname'],
    "UID"          => $dPconfig['dbuser'],
    "PWD"          => $dPconfig['dbpass'],
    "CharacterSet" => "UTF-8"
);

$conn = sqlsrv_connect($dPconfig['dbhost'], $connArr) or die("cannot connect");

все должно работать нормально. Также см. Справочные документы sqsrv.драйверы для других кодировок.Надеюсь, это поможет.

0 голосов
/ 15 июля 2010

Хорошо, попробуйте отправить это в базу данных, прежде чем выбрать арабский текст:

SET NAMES utf8;

Например, при использовании PDO:

try {           
    $dbh = new PDO(
    'mysql:host=127.0.0.1;dbname=dbname',
    'root',
    'root',
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);
} catch (Exception $e) {
    echo $e->getMessage();
}

Во-вторых, убедитесь, что все ваши файлы (файлы PHP, шаблоны HTML) сохранены в кодировке UTF-8.

В-третьих, если ничего не получилось, попробуйте поиграть с функцией iconv () немного подробнее:

echo iconv("Latin1_General_CI_AS","utf-8",$row[0]);
echo iconv("Arabic_CI_AS","utf-8",$row[0]);

и т. Д.

...