Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PHP and MSSQL, Как отобразить Юникод данные базы MSSQL 
:(
    Опции темы
pentium
Дата 16.6.2007, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 2.2.2007

Репутация: нет
Всего: нет



Господа!  Как отобразить Юникод данные базы MSSQL  в  PHP странице.  Она выводит "?" знаки вместо некоторых. 
PM MAIL   Вверх
Wowa
Дата 16.6.2007, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



установки кодировку соединения. Вероятно командой SET NAMES utf8

И проверь какая кодировка посылается в meta-теге браузеру.
PM WWW   Вверх
sTa1kEr
Дата 17.6.2007, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 9
Всего: 146



Цитата(Wowa @  16.6.2007,  19:47 Найти цитируемый пост)
установки кодировку соединения. Вероятно командой SET NAMES utf8

Цитата(pentium @  16.6.2007,  17:28 Найти цитируемый пост)
Как отобразить Юникод данные базы MSSQL в  PHP странице.

А не MySQL.

pentium, для Unicode данных в MSSQL нужно использовать поля типа nchar, nvarchar и т.п.(т.е. начинающиеся с буквы n). Тогда не будет никаких проблем с отображением.
PM MAIL   Вверх
pentium
Дата 18.6.2007, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 2.2.2007

Репутация: нет
Всего: нет



Уважаемый sTa1kEr.  У меня в базе тип данных   nvarchar.    Но все равно  он показывает такие символы "?". 

Проблема такая.     Если с PHP вводить данные в базу то он их кодирует с символами  "&#601" и так далее.  Когда читает их показывает нормально в юникоде.   
Мне хотелось чтобы запись была читабельна  и  в MSSQL Server-е.



Это сообщение отредактировал(а) pentium - 18.6.2007, 10:37
PM MAIL   Вверх
sTa1kEr
Дата 18.6.2007, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 9
Всего: 146



Тогда поподробнее.
Цитата(pentium @  18.6.2007,  10:35 Найти цитируемый пост)
Но все равно  он показывает такие символы "?". 

Где именно он отображает не правильно? В Enterprise Manager-е (Management Studio) ?
Цитата(pentium @  18.6.2007,  10:35 Найти цитируемый пост)
Если с PHP вводить данные в базу то он их кодирует с символами  "&#601" и так далее.

"ə" - это HTML-сущности и они не имеют отношения к БД, т.ч. не совсем понятно... Проверьте, перед запросом в БД данные находятся в нормальном виде? И еще вы вставляете данные с префиксом N ?
Код

INSERT INTO table (txt) VALUES (N'Юникоде текст')

И еще какие именно символы не отображаются? К примеру буква ё правильно отображается?
PM MAIL   Вверх
pentium
Дата 20.6.2007, 06:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 2.2.2007

Репутация: нет
Всего: нет



Нет. В БД они не в нормальном виде.   Допусьтим, если я вношу в БД информацию с помощью С++  то они  в Enterprise Manager-е  находятся в нормальном виде,   а если с PHP то тогда в виде  "&#601" и так далее.

Это PHP что-то делает или может я ошибаюсь.
PM MAIL   Вверх
sTa1kEr
Дата 20.6.2007, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 9
Всего: 146



Приведите часть кода добавления информации в БД.
PM MAIL   Вверх
pentium
Дата 20.6.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 2.2.2007

Репутация: нет
Всего: нет



Пожалуйста.

//-------------------------------------------------------------------------------------
 mssql_select_db(" моя база ");

 $sql = "insert into таблица ( столбец ) values (' $_имя поля ввода ')";

 $res = mssql_query($sql);

 if ($res) echo "  Insert into table is OK";   

 else  echo "  Error in the insert  ";

//-------------------------------------------------------------------------------------

Но тут ни чего такого.  Когда я ввожу символы нашей Республики он рисует их в таблицу каким то странным языком.

Это сообщение отредактировал(а) pentium - 20.6.2007, 16:22
PM MAIL   Вверх
sTa1kEr
Дата 20.6.2007, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 9
Всего: 146



Скорее всего у вас до запроса уже некоторые символы в виде HTML-сущностей.
Код

mssql_select_db(" моя база ");

// Что бы проверить, что данные корректные, а не html сущности
// И смотрите в исходниках HTML, а не в браузере!
var_dump($_имя_поля_ввода);

// Как я уже говорил, для unicode нужно добовлять букву N перед константой
 $sql = "insert into таблица ( столбец ) values (N' $_имя_поля_ввода ')";

 $res = mssql_query($sql);

 if ($res) echo "  Insert into table is OK";   

 else  echo "  Error in the insert  ";

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0459 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.