как узнать кодировку ms sql базы
Кодировка базы данных MySQL – выводим из запоя пьющие базы
Дата публикации: 2016-07-13
От автора: вы зачем полное ведро баз на мусорку несете выбрасывать? Сервер китайский попался, и все строки иероглифами отображаются? Так кодировка базы данных MySQL не та, наверное. Кто ее закодирует, она же база? Понятно! Идите, гражданин дальше. Не обращаем на него внимания. Сегодня мы познакомимся с кодировками в MySQL.
Зачем кодировать БД?
Код MySQL, как и любая другая информация в вычислительной технике, задается с помощью сочетания единицы и нуля, которые образуют биты. Вспоминаете? Это ведь основы информатики, которые все мы проходили в школе.
В мире существует множество текстовых кодировок (сочетаний 0 и 1), но в современности все они более-менее стандартизированы. Хотя и сейчас можно наткнуться на «абракадабру», если неправильно задать кодировку.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
На данном этапе развития всемирной паутины самыми распространенными являются 3 типа кодировок:
Мы не будет сильно «зарываться» в теоретическом ворохе. Для получения более детальной информации перейдите по расположенным выше ссылкам на соответствующие публикации в Википедии.
Для нас самой главной кодировкой базы данных MySQL является UTF-8. Это значит, что в ней используется 8-битный Юникод для представления всех символов. Благодаря широкой поддержке данной кодировки в Сети и на прикладном уровне вы можете быть уверены, что записи в базе будут сохранены в читаемом виде (без «абракадабр»).
Где ее искать?
Немного пробежимся по интерфейсу phpMyAdmin. Зайдя на первую страницы программы, обратите внимание на раздел «Общие настройки».
Параметр «Сопоставление кодировки соединения с MySQL» устанавливает, с какой кодировкой должен сравниваться формат полученных данных при подключении к серверу СУБД. В этой программной оболочке кодировку можно задать вручную.
В «родных» утилитах СУБД (mysqladmin, mysqlimport и других) кодировка таблиц MySQL берется из настроек операционной системы ПК. В случае их отсутствия устанавливается значение, заданное по умолчанию. Чаще всего, это кодировка latin1.
При соединении с СУБД клиентская сторона с помощью значений нескольких системных переменных говорит MySQL, какую кодировку использовать при обработке и отображении данных из БД.
Системные переменные и их значения
Архитектура MySQL построена на основе «клиент-сервер». Системные переменные (точнее их значения) используются при установке соединения клиента и сервера для корректного отображения всех данных, их обработки и поддержания сетевого сеанса.
Для ознакомления с установленными значениями переменных системы СУБД в phpMyAdmin нужно в последнем пункте верхнего меню «Еще» выбрать «Переменные».
Также список всех переменных (в том числе и тех, которые нужны для настройки кодировка MySQL) можно получить с помощью команды show variables.
Вернемся к полученному списку переменных, и остановимся на тех, которые начинаются с charset. Краткое описание тех, которые могут пригодиться:
character_set_client – указана кодировка, в которой будут поступать данные с клиентской стороны.
character_set_connection – устанавливает кодировку соединения.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
character_set_database –набор символов, используемы в БД по умолчанию.
character_set_results – кодировка, в которой сервер отправит данные клиенту.
character_set_server –используемая по умолчанию на сервере.
Вот тут перед описанием следующей группы переменных, необходимых для того, как узнать кодировку базы MySQL, следует покопаться в теории.
Под кодировкой мы подразумеваем набор символов, применяемых для определенной структуры данных (базы, таблицы, поля). Но есть еще такое понятие как «представление» (collation), которая соответствует конкретному языку и используется при сравнении и упорядочивания записей.
Например, есть кодировка UTF-8. Существует огромное количество представлений в рамках одной кодировки. Нельзя сравнивать данные, «представленных» в разных наборах символов. Это можно осуществлять только в рамках одной кодировки. Последние 3 переменные как раз и показывают установленные представления.
Разрешенные сравнения для конкретной кодировки на текущем экземпляре сервера, можно узнать с помощью команды show collation. Например:
Кодировка символов SQL Server по умолчанию
Как я могу увидеть текущую кодировку символов в SQL Server?
5 ответов
Если вам нужно знать параметры сортировки по умолчанию для вновь созданной базы данных:
это параметры сортировки сервера для экземпляра SQL Server, который выполняется.
кодировок
чтобы увидеть, как совпадают локали до сортировки, проверьте:
чтобы увидеть кодовую страницу, связанную с определенной сортировкой (это набор символов и влияет только на CHAR / VARCHAR / TEXT data), выполните следующие действия:
чтобы увидеть LCID (т. е. locale), связанный с определенной сортировкой (это влияет на правила сортировки и сравнения), запустите следующее:
чтобы просмотреть список доступных параметров сортировки, а также связанные с ними Lcid и кодовые страницы, выполните:
по умолчанию
прежде чем рассматривать параметры сортировки по умолчанию сервера и базы данных, следует понять относительную важность этих значений по умолчанию.
параметры сортировки базы данных по умолчанию используются в двух пути:
поскольку здесь есть несколько слоев, где можно указать параметры сортировки (база данных по умолчанию / столбцы / литералы и переменные), результирующая сортировка определяется by Очередность Параметров Сортировки.
все сказанное, следующий запрос показывает настройки по умолчанию / текущие для ОС, экземпляра SQL Server и указанной базы данных:
обновление 2018-10-02
хотя это еще не жизнеспособный вариант, SQL Server 2019 вводит встроенную поддержку UTF-8 в VARCHAR / CHAR типы данных. В настоящее время с ним слишком много ошибок для его использования, но если они исправлено, то это опция для некоторые сценарии. Пожалуйста, посмотрите мой пост».—96—>собственная поддержка UTF-8 в SQL Server 2019: спаситель или лжепророк?», для детального анализа этой новой функции.
Исправление и изменение кодировок MySQL
В связи с тем, что довольно много людей обращается с просьбой помочь исправить проблему с кодировками MySQL, решил написать статью с описанием, как «лечить» наиболее часто встречающиеся случаи.
В статье описывается не то, как первоначально правильно настроить кодировки MySQL (об этом уже довольно много написано), а о случаях, когда есть довольно большие таблицы с неправильными кодировками и нужно всё исправить.
Самое плохое в неправильно настроенных кодировках — то, что зачастую проблему сложно обнаружить, и с первого взгляда может казаться, что сайт работает правильно, и никаких проблем нет.
Небольшое отступление. Sypex Viewer
В какой-то момент надоело отправлять людей в громоздкий phpMyAdmin, и была написана крошечная утилитка Sypex Viewer. Она представляет собой один PHP-файл, использует современные Web 2.0 технологии AJAX, JSON и другие. Основные задачи, которые ставилась при создании — минимальный вес, и максимальное удобство и скорость работы. В дальнейшем в примерах будут скриншоты из неё, но все те же действия можно сделать и в phpMyAdmin.
Данные в cp1251 таблицы в latin1
Данные и таблицы в utf8, но кодировка соединения latin1
Теперь рассмотрим более запущенный случай. Набирающая популярность в последнее время проблема, в связи с повальным увлечением UTF-8. Создатели софта стали переводить свои детища на UTF-8, но и тут не всё так гладко, как хотелось бы.
Возникает проблема в основном в случае, когда у таблиц указана кодировка UTF-8, данные в UTF-8, но кодировка соединения установлена по умолчанию latin1 (типичный пример, vBulletin 4, хоть там и есть в конфигах настройка кодировки соединения, но она закомментирована по умолчанию).
В результате в MySQL присылаются данные в UTF-8, но поскольку указана кодировка соединения latin1, то MySQL пытается преобразовать данные из latin1 в UTF-8. В итоге русские символы выглядят так:
Ситуация более запущенная, но исправляется проблема почти также, как в первом случае, только в пункте 2 нужно выбрать кодировку latin1, а в пункте 6 нужно выбрать utf8 кодировку.
Изменение кодировки
Кодировка соединения
Не забываем, что после исправлений кодировки, нужно убедиться, что ваши скрипты используют правильную кодировку соединения (в принципе, это будет сразу видно, они будут неправильно показывать русские символы без нужной кодировки соединения). У некоторых она выставляется в настройках, в некоторых придется добавить самостоятельно.
Для чего достаточно пройтись поиском по файлам, и найти где вызывается функция mysql_connect (или mysqli_connect). После этой строки нужно добавить строку которая укажет кодировку соединения.
Где вместо cp1251, указать нужную кодировку соединения.
Не забывайте перед преобразованиями кодировок делать бэкап, тут как с презервативами, лучше пусть он будет и не понадобится, чем когда понадобится — его не будет.
Как узнать кодировку ms sql базы
� MS-SQL �� �������� ��������� (���������) � SQL server management studio!
select * from table
where title like ‘%����%’
���� «title» => varchar(255) �\��� text
��������� � ���� ������ => Collation => Cyrillic_General_CI_AS
=> options => ansi null default
� ��� ����� ���� ��������, ��� ��������� SQL �������� ���������?? ������� ������ �������������� MSSQL??
Re: MS-SQL �� �������� ��������� (���������) � SQL server management studio! [new] | |
HandKot Member ������: Sergiev Posad | � ���� ��� �������� ? |
13 ��� 12, 14:09����[13157802] �������� | ���������� �������� ���������� |
Re: MS-SQL �� �������� ��������� (���������) � SQL server management studio! [new] | |
Aysvel Member � ��� ��������) ��� � ��� �� ����, ��� � ������ ������ ��������� ���������� ���� «N» | |
13 ��� 12, 14:10����[13157815] �������� | ���������� �������� ���������� |
Re: MS-SQL �� �������� ��������� (���������) � SQL server management studio! [new] | |
HandKot Member ������: Sergiev Posad | ��� ��� ����� ������ ������ � ��� SSMS ��������� � ������ ����������, � ��� ��� ��������������� � �� ���� |
13 ��� 12, 14:17����[13157884] �������� | ���������� �������� ���������� |
Re: MS-SQL �� �������� ��������� (���������) � SQL server management studio! [new] | ||||||||
Aysvel Member ������: ������ |
|