Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с кодировкой в MSSQL, не отображает русский язык 
:(
    Опции темы
Vigoroso
Дата 16.9.2009, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Введение: Сразу скажу что опыта работы с MSSQL мало и моя задача стоит лишь в том чтобы регулярно забирать информацию (Работаю на PHP).
Задача: Получение информации, её обработка и сохранение результатов в другую базу с кодировкой UTF-8
Проблема: Если в поле текстовом присутствует русские буквы, то в результате выполнения запроса получаю вместо них "?".
Проделанные проверки:
- Попробовал отображать текст в разных кодировках
- Попробовал кодировать в PHP из разных кодировок в UTF-8
- Пытался найти информацию по работе с кодировками в MSSQL, ничего определенного не нешел, может и плохо искал, потому что не знаю где искать...

Какие могут быть вариенты решения данной проблемы, в какой кодировке MSSQL возвращает результат.

Это сообщение отредактировал(а) Vigoroso - 16.9.2009, 21:41
PM MAIL   Вверх
Zioma
Дата 16.9.2009, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Может это поможет?
PM MAIL   Вверх
Vigoroso
Дата 16.9.2009, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Zioma @ 16.9.2009,  19:55)
Может это поможет?

Если бы я использовал SQL Server Driver for PHP, то может и помогло бы,
этот драйвер работает только под Windows, что никак не работает под Linux.

Я использую стандартный плагин с функциями mssql_connect, mssql_query и т.п.

Попробовал сделать iconv("utf-16le", "utf-8", $data); т.е. перекодировать из возвращаемой MSSQL-ем кодировки в UTF-8 (как в примере, на всякий случай...), в ответ получил алерт о том что "Detected an incomplete multibyte character in input string" и китайские иероглифы...

Сейчас попробую поработать с этим драйвером, но все равно то что он только под Windows это плохо - ограничение на использование...

Есть подозрение на то, что примерно такие же операции проделывает mssql плагин, но не совсем правильно вот и глюки..

P.S. Информация в MSSQL вообще в какой кодировке хранится, потому что в свойствах таблицы у меня написан только "collation"?
PM MAIL   Вверх
boevik
Дата 16.9.2009, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

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



1. Поле определено как nvarchar?
2. Заносить данные в следующем виде
Код

insert into ...
values (N'текст')



--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Vigoroso
Дата 16.9.2009, 22:45 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(boevik @ 16.9.2009,  21:54)
1. Поле определено как nvarchar?
2. Заносить данные в следующем виде
Код

insert into ...
values (N'текст')

база для меня в режиме readonly только, я ничего в неё не заношу, только считываю,
даже если процесс внесения в неё информации не верен, исправить нет возможности.
Microsoft SQL Server Management Studio отображает информацию коректно.

Добавлено @ 22:47
Вот тип данного поля:
Код

[Name] [nvarchar](64) COLLATE Chinese_Hong_Kong_Stroke_90_CI_AS NULL,


Это сообщение отредактировал(а) Vigoroso - 16.9.2009, 22:47
PM MAIL   Вверх
kobra
Дата 18.9.2009, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

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



Цитата(Vigoroso @  16.9.2009,  22:45 Найти цитируемый пост)
[Name] [nvarchar](64) COLLATE Chinese_Hong_Kong_Stroke_90_CI_AS NULL,

значит: поле строковое 64 символов, UTF-8, но кодировка у него китаиское.
попробуи так
select [name] collate Cyrillic_General_CI_AS
PM MAIL   Вверх
Vigoroso
Дата 22.9.2009, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(kobra @ 18.9.2009,  14:24)
Цитата(Vigoroso @  16.9.2009,  22:45 Найти цитируемый пост)
[Name] [nvarchar](64) COLLATE Chinese_Hong_Kong_Stroke_90_CI_AS NULL,

значит: поле строковое 64 символов, UTF-8, но кодировка у него китаиское.
попробуи так
select [name] collate Cyrillic_General_CI_AS

Отлично!
Возвращает сейчас результат в кодировке Windows-1251,
но возникает другой вопрос - можно ли сразу возврашать в UTF-8?
PM MAIL   Вверх
Vigoroso
Дата 22.9.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Проблема ещё состоит и в том, что могут быть символы латинского алфавита, как пример французского или итальянского....
PM MAIL   Вверх
kobra
Дата 23.9.2009, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

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



попробуи collate Latin1_General_CI_AS. кажется 1252.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




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


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

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