Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2011, 16:35   #1
DimaKGD
 
Регистрация: 24.01.2011
Сообщений: 5
По умолчанию Вывод русских символов из MSSQL

Здравствуйте!
Помогите с русскими символами, данные в БД в UTF-8, поля - nvarchar, использую php_mssql (я понимаю что sqlsrv под это заточен, но попросили сделать с помощью этой фигни), вместо русских символов получаю вопросительные знаки (?), как это можно победить?

Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
 
<body>
<?
$db = mssql_connect("", "", "");
    mssql_select_db("",$db);
 
$result = mssql_query("SELECT CAST(Adres AS TEXT) AS Adres FROM TP ",$db);
while ($row = mssql_fetch_assoc($result)) {
    printf("%s <BR>\n", $row["Adres"]);
}
 
?>

</body>
</html>
DimaKGD вне форума Ответить с цитированием
Старый 12.05.2011, 17:41   #2
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию

Пользуйтесь SET NAMES {кодировка} или можно в конфигурациях задать в какой кодировке он по дефолту будет информацию выдавать
ololo-schoolboy вне форума Ответить с цитированием
Старый 12.05.2011, 17:50   #3
DimaKGD
 
Регистрация: 24.01.2011
Сообщений: 5
По умолчанию

Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
 
<body>
<?
$db = mssql_connect("", "", "");
    mssql_select_db("",$db);
mssql_query("SET NAMES 'UTF-8'",$db);
 
$result = mssql_query("SELECT CAST(Adres AS TEXT) AS Adres FROM TP ",$db);
while ($row = mssql_fetch_assoc($result)) {
    printf("%s <BR>\n", $row["Adres"]);
}
 
?>

</body>
</html>
Выдает ошибку:
Warning: mssql_query() [function.mssql-query]: message: 'NAMES' is not a recognized SET option. (severity 15)
DimaKGD вне форума Ответить с цитированием
Старый 12.05.2011, 18:00   #4
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию

значит эта фича только для mysql, можно попробовать изменить кодировку средствами php или найти аналог в mssql
ololo-schoolboy вне форума Ответить с цитированием
Старый 14.05.2011, 15:23   #5
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию

вроде сдеся: http://www.forum.dklab.ru/viewtopic.php?p=146234 есть решение
ololo-schoolboy вне форума Ответить с цитированием
Старый 14.05.2011, 15:31   #6
slips
Форумчанин
 
Аватар для slips
 
Регистрация: 28.10.2008
Сообщений: 350
По умолчанию

Не забывайте так же сохранить кодировку файла в utf-8.
А так же выставить докум-тайп
Код HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta name="language" content="ru" />
slips вне форума Ответить с цитированием
Старый 17.05.2011, 16:07   #7
DimaKGD
 
Регистрация: 24.01.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от ololo-schoolboy Посмотреть сообщение
вроде сдеся: http://www.forum.dklab.ru/viewtopic.php?p=146234 есть решение
Вот этого ответа я больше всего боялся
DimaKGD вне форума Ответить с цитированием
Старый 17.05.2011, 20:48   #8
8oOoRPM
Форумчанин
 
Регистрация: 12.11.2010
Сообщений: 146
По умолчанию

ini_set('default_charset', 'UTF-8');
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");

всё решится
8oOoRPM вне форума Ответить с цитированием
Старый 06.06.2015, 10:09   #9
mc1r
Новичок
Джуниор
 
Регистрация: 04.06.2015
Сообщений: 1
По умолчанию

Цитата:
Сообщение от 8oOoRPM Посмотреть сообщение
ini_set('default_charset', 'UTF-8');
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");

всё решится
Возможно! Но только сперва вам потребуется успешно сконвертировать вашу базу в MySQL.

А теперь по сути:

Необходимо, чтобы кодировка страницы и кодировка настроек [MSSQL] в php.ini совпадали:

PHP код:
<?
  header
('Content-Type: text/html; charset=utf-8');
  
ini_set('mssql.charset','UTF8');
  ...
?>
Кроме этого, пришлось ещё подправить номер версии в настройках TDS-драйвера (/etc/freetds.conf):

Код:
...
[172.17.29.100]
        host = 172.17.29.100
        port = 61667
        tds version = 7.0
        client charset = UTF8
172.17.29.100 - адрес сервера СУБД.

Последний раз редактировалось mc1r; 06.06.2015 в 10:11.
mc1r вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод русских символов в консоль fs444 Общие вопросы C/C++ 10 23.02.2016 10:29
Множества! Не видит русских строчных символов, и английских paravoz1k Помощь студентам 5 09.04.2011 09:10
Не та кодировка русских символов в программах Linux Alex Cones Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 11 18.09.2009 21:44
Проверка на сущестование файла с названием из русских символов evgenrpo Win Api 6 10.06.2009 09:34