Sql не работает с русскими буквами

MySQL : MySQL — Распространенные проблемы с русскими буквами и методы их решения

Распространенные проблемы с русскими буквами и методы их решения

У My SQL версии 4.1 и выше (далее 4.1+) с русскими буквами бывают несколько проблем — рассмотрим их по отдельности.

1. PHP ИСПОЛЬЗУЕТ НЕВЕРНУЮ КОДИРОВКУ В КАЧЕСТВЕ КЛИЕНТСКОЙ
Симптомы:
– Через phpMyAdmin (здесь и далее подразумевается версия умеющая работать с кодировками, т.е. >= 2.6.0) все по-русски, а в скрипт приходят вопросительные знаки.
– Скрипт, заносящий данные в базу, видит русский нормально, а после вставки, как в правильном скрипте, так и в phpMyAdmin-е — знаки вопросов.

Тестирование:
Попробуйте в начале вашего скрипта, но после соединения выполнить SQL-запрос «SET NAMES кодировка», где кодировка, та кодировка, в которой у вас (по вашему мнению) данные. Например, для русской виндовой кодировки (windows-1251) это будет cp1251, для KOI8-R – koi8r, для UTF-8 – utf8 и так далее. В дальнейшем она будет упоминаться как «кодировка«.

Результат тестирования:
Если буквы (но необязательно слова) стали русскими, значит данные в базе лежат в правильной кодировке, сама база эту самую кодировку и использует.
Если буквы стали русскими, а слова нет («бнопня»), значит скрипт ожидает данные в другой русской кодировке — пробуйте другие, пока не получится русских слов.

Решение:
1) Оставить запрос «SET NAMES кодировка» в начале скрипта, если скриптов много – см. вариант 2.
2) Заставить My SQL автоматом выполнять этот запрос при каждом коннекте к нему.
Для этого нужно в файле my.cnf/my.ini (где их искать — в документацию) в раздел [server] добавить следующую строку:
init-connect=»SET NAMES кодировка»
Однако, следует заметить, что это НЕ будет работать, если пользователь, которым вы подключаетесь к базе имеет привилегию SUPER (а стандартный пользователь root к таким относится, так же как и все созданные через «GRANT ALL PRIVILEGES ON *.* TO . »). Это сделано для того, чтобы в случае ошибки в этом запросе (а его можно изменить во время работы), хоть кто-то мог подключиться к базе и исправить его.
Внимание! Функция mysqli_client_encoding() и сотоварищи, отображает кодировку клиента на момент соединения и не меняют возвращаемое значение в процессе работы. Поэтому не стоит кричать, что кодировка не меняется. Просто делайте что говорят и смотрите результат работы скрипта. Получить нужное значение можно SQL-запросом “SHOW VARIABLES LIKE ‘character_set_client'».
3) Начиная с версий 4.1.15 и 5.0.13 добавить в секцию [mysqld] или [server] файла my.cnf/my.ini параметр skip-character-set-client-handshake. Этот параметр заставляет сервер игнорировать кодироку, посылаемую клиентом, и использовать указанную серверу. В примере конфигурации ниже этот параметр уже есть.

2. My SQL ИСПОЛЬЗУЕТ НЕВЕРНУЮ КОДИРОВКУ
Симптомы:
Русский текст приходит в скрипт как русский, в консольном клиенте тоже все хорошо. Однако не работает сортировка, перевод в верхний/нижний регистр и т.д. Если применить решение из проблемы №1, то либо русский текст становится вопросами, либо mysql_error() возвращает сообщение похожее на «Illegal mix of collations (latin1_general_ci,IMPLICIT) and (cp1251_general_ci,COERCIBLE). ». В тоже время phpMyAdmin русский текст отображает как «крокозябры» (латинские символы с умляутами и т.д.).

Тестирование:
Попробуйте в phpMyAdmin-е выполнить запрос вида «SELECT CONVERT(CONVERT(поле USING binary) USING кодировка) FROM таблица», где таблица и поле соответствующая таблица и поле с русским текстом, а кодировка — кодировка из проблемы №1.

Результат тестирования:
Если буквы (но необязательно слова) стали русскими, значит текст в базе лежал не в правильной кодировке и его нужно сконвертировать.
Если буквы стали русскими, а слова нет («бнопня»), значит неверно выбрана одна из русских кодировок – пробуйте другие, пока не получится русских слов.

Решение:
1) Установить для My SQL нужную кодировку по умолчанию.
Внимание! Это решение сработает сработает, только если кодировки не переопределены для базы, таблицы или столбца.
Для этого нужно в файл my.cnf/my.ini в раздел [server] добавить следующую строку:
default-character-set=cp1251
2) Сконвертировать таблицы в нужную кодировку.
Про то как конвертировать таблицы с неверными кодировками хорошо написано в мануале. Повторять здесь то же самое не к чему.
Компилирование My SQL 4.1+ из исходников

Читайте также:  Как починить гаджет валюты

Самостоятельная компиляция My SQL 4.1+ из исходников
1) Отконфигурировать (./configure) My SQL как минимум со следующими параметрами:
—with-charset=cp1251 – задает кодировку по умолчанию для сервера и клиента (для портов Free BSD – параметр для make WITH_CHARSET)
—with-collation=cp1251_general_ci – задает collation по умолчанию (для Free BSD – WITH_COLLATION)
—with-extra-charset=all – включает поддеркжу всех поддерживаемых My SQL кодировок (для Free BSD – WITH_XCHARSET)
Внимание! Для портов Free BSD нужно с такими параметрами собрать, как сервер, так и клиента. Тоже самое замечание относится и к случаю, когда клиент и сервер находятся физически на разных машинах. Т.е. нужно понимать, что и сервер, и клиент должны быть собраны с привильной кодировкой по умолчанию, иначе полного результата не будет.
2) Cкомпилировать и установить My SQL Smile.
3) Скомпилировать PHP с только что установленной библиотекой-клиентом My SQL (т.е. указав —with-mysql=/path/to/mysql).

Источник

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?? 13 ��� 12, 14:07����[13157783] �������� | ���������� �������� ����������

Re: MS-SQL �� �������� ��������� (���������) � SQL server management studio! [new]
HandKot
Member

������: Sergiev Posad
���������: 3086

� ���� ��� ��������

?

13 ��� 12, 14:09����[13157802] �������� | ���������� �������� ����������
Re: MS-SQL �� �������� ��������� (���������) � SQL server management studio! [new]
Aysvel
Member

������:
���������: 38

HandKot,

� ��� ��������) ��� � ��� �� ����, ��� � ������ ������ ��������� ���������� ���� «N»

13 ��� 12, 14:10����[13157815] �������� | ���������� �������� ����������
Re: MS-SQL �� �������� ��������� (���������) � SQL server management studio! [new]
HandKot
Member

������: Sergiev Posad
���������: 3086

��� ��� ����� ������
������ � ��� SSMS ��������� � ������ ����������, � ��� ��� ��������������� � �� ����
13 ��� 12, 14:17����[13157884] �������� | ���������� �������� ����������
Re: MS-SQL �� �������� ��������� (���������) � SQL server management studio! [new]
Aysvel
Member

������:
���������: 38

HandKot,

� ����� ������, ������� �� �����. ���� ���-�� ����� ����� ��������� ����� ����������, ����� �������� ��� «N» — ����� ��������, ���� �� �������� ���������.

13 ��� 12, 14:24����[13157947] �������� | ���������� �������� ����������
Re: MS-SQL �� �������� ��������� (���������) � SQL server management studio! [new]
iap
Member

������: ������
���������: 47165

Aysvel
HandKot,

� ����� ������, ������� �� �����. ���� ���-�� ����� ����� ��������� ����� ����������, ����� �������� ��� «N» — ����� ��������, ���� �� �������� ���������.

����� ������������ ���������� �������� ������ ���� ������ N.
����� ������������ ��� ��������� (��������).
� ��� ������� ������ ��������� ������� NCHAR(), UNICODE() � �.�, � �� CHAR(), ANSI() � �.�.

13 ��� 12, 15:10����[13158529] �������� | ���������� �������� ����������
Re: MS-SQL �� �������� ��������� (���������) � SQL server management studio! [new]
Aysvel
Member

��� ���-�� ������� ���������, ��� ���������� ����� ������� � �������� ��������.

13 ��� 12, 15:16����[13158605] �������� | ���������� �������� ����������
Re: MS-SQL �� �������� ��������� (���������) � SQL server management studio! [new]
������� ������
Member

������:
���������: 4

HandKot, �� ����� ��������� ����� ��������� N �������� �� �����������

if OBJECT_id(‘tempdb..#tmp’) is not null drop table #tmp

create table #tmp (f1 varchar(32) primary key clustered, f2 varchar(255))

insert #tmp(f1, f2)
select
‘AAAB’, ‘ASDFGFGHHJJJJK’
union all
select
‘ABBB’, ‘ASDFGFGHHJJJJK’
union all
select
‘ABBc’, ‘ASDFGFGHHJJJJK’
union all
select
‘ABBd’, ‘ASDFGFGHHJJJJK’
union all
select
‘ABBe’, ‘ASDFGFGHHJJJJK’
union all
select
‘ABBf’, ‘ASDFGFGHHJJJJK’
union all
select
‘ABBg’, ‘ASDFGFGHHJJJJK’
go
set showplan_text on
go
select * from #tmp where f1 like ‘AA%’

Источник

SQL не работает с русскими символами

Доброго дня! Делаю дипломную работу, все сделал, но не работает один запрос, ответ пустой:

Есть аналогичный запрос, который полностью работает с кириллицей:

Пробовал после подключения строками

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Ошибка SQL запроса к базе mdf с русскими символами
Здравствуйте, помогите пожалуйста, возникает ошибка при попытке SQL запроса к базе mdf(C#) с.

Программа не работает с русскими символами
Программа должна находить два самых часто встречающихся символа и вывести их.Потом убрать лишние.

Не работает XOR с русскими символами
Необходимо написать приложение XOR-шифрования на Android — написал. Собственно само шифрование.

AJAX не работает с русскими символами
Решил изучить аякс, почитал книжку, набрал пример. Не работает с русскими символами почему то.

pal_palich, Попробуйте перед строкой, в которой содержатся русские буквы, написать символ N, например?

Не правильно работает регулярка с русскими символами
Приветствую. В интернете большинство людей предлагают такую регулярку для разрешения только.

Не работает удаление директории с русскими символами в пути
пишу батник rmdir c:\пользователи\администратор\angl1\angl2\endoftheroad \\\\\\\\\\\\\\ система.

ASP и база данных не работает с русскими символами
Почему моя база на Access (да и на Paradox) возврящает за полей заполненных по русски только знаки.

Удалить второй элемент в списке — программа не работает с русскими символами
Скинул в блокноте шрифты не распознает русские дома. Еще не подскажете какой шрифт установить.

Источник

SQL русские символы взапросе

В запросе русские символы не ищет, но если найдет строку — то русские символы выводит корректно. БД — SQL — стандартная, что предоставляет Visual Studio. Тип данных — nvarchar(50). Возможно беда с кодировкой, как быть?

В таблице русские символы не отображаются
У меня в таблице именно русские символы выводятся в виде вопросиков, как в таблице, так и в виде.

Не корректно отображаются русские символы
Здравствуйте, ребята! Я выгружаю таблицу из mssql в excel c помощью bcp set @sql=’exec.

SQL Server 6.5 не печатает русские буквы
Проблема такая: SQL Server 6.5 не печатает русские буквы (значения поля) на принтер. То есть, их.

Проверка на символы в ms sql
Есть процедура: ALTER Procedure . @GuildName varchar(8), @MasterName varchar(10) AS BEGIN.

Решение

А теперь работает?

Кроме того, бывает, что заносят P вместо Р, o вместо о, с вместо с. Вы заметили разницу между этими символами? А она есть!

Да это проверял, на вид одни символы, по факту разные(английские и русские).

Да работает, спасибо.

А что означает это N ?
И возможна ли проблема, если я напишу N’Russia’ ? Так то ищет, просто на будущее спрашиваю.

Тип NVARCHAR(50) — это юникод, каждый символ — два байта.
Если в выражении применяется литеральная строка, то, вообще говоря, неясно, юникод ли это.
Буква N перед одинарными кавычками литеральной строки снимает все сомнения. Это юникод. N — это от слова National.

Это всё имеется в документации. Зачастую неюникодная строка преобразуется по-умолчанию в юникодную некорректно,
если не написать явно N.

Добавлено через 2 минуты
Всё это не касается английских букв, ибо американцы позаботились, чтобы у них всё было просто, чтобы даже над всем этим не задумываться.

Источник

В MySQL знаки вопросов вместо русских букв — решение проблемы с кодировкой

При переносе дампа или после нескольких манипуляций в базе неожиданно появились знаки вопросов в MySQL вместо русских букв? Это известная и распространённая проблема в MySQL старших версий.

Это руководство поможет предпринять быстрые шаги в исправлении ситуации.

Мы рассмотрим конкретные действия для быстрого решения. Обратите внимание на официальное руководство по кодировке в MySQL, чтобы вы смогли разбираться в сути и выполнять рекомендации осознанно.

Исправляем знаки вопросов в MySQL на русские буквы

Воспользуйтесь этими быстрыми рекомендациями, чтобы отобразить русские буквы без знаков вопросов и «крякозябр». Ниже мы привели некоторые уточнения.

Дождитесь выполнения соединения с сервером

Введите запрос:
set names кодировка

«кодировка» — это параметр кодировки, в которой вы выводите данные страницы на сайте.
То есть запрос для UTF-8 должен выглядеть так:
set names utf8

А для Windows-1251 вот так:
set names cp1251

Очень часто параметр «Set Names» не помогает решить проблему кодировке при сортировке по имени, хотя буквы отображаются нормально. Как это исправить, читайте далее.

Обратите внимание, что запросы «set names» по факту не влияют на кодировку, которая используется функцией mysql_real_escape_string . Поэтому рекомендуется применять установку кодировки через mysql_set_charset() вместо запроса «set names». Но даже если вы проигнорируете эту рекомендацию, то для Uta8 и других однобайтных кодировок ничего плохого не последует.

Чтобы не задавать кодировку в каждом скрипте, допишите в my.ini
[mysqld]
init-connect=’SET NAMES utf8′

Исправление проблемы кодировки MySQL, если запрос SET NAMES не помог

Перед тем, как изменить кодировку MySQL, вновь выполните запрос «Set Names», но уже с указанием кодировки таблицы (мы должны её выяснить).

Причина кроется в том, что для таблиц настройка в одной кодировке, а данные в них — в другой.

Попробуйте начать с простого решения — того же запроса «Set Names», но в кодировке таблицы.

Для этого задайте запрос для названия вашей таблицы: show create table `table`

Используйте полученную кодировку в запросе «Set Names»:
SET NAMES кодировка
«кодировка» — это параметр, который показал результат запроса «Show Create Table» из пункта 3 ( DEFAULT CHARSET=кодировка ).

Так вы уберёте «крякозябры» и знаки вопросов из MySQL, настроите правильную отдачу и запись русских букв в данных (главное, чтобы у самой веб-страницы была соответствующая кодировка), но проблему сортировки и поиска пока не решите. Идём дальше.

Теперь, зная кодировку таблицы (например, latin1 ) и имея данные в той же кодировке, мы должны изменить фактическую кодировку данных.

Через mysqldump создайте дамп базы данных.

Используйте эту команду, в которой вместо слова «кодировка» вставьте параметр, выясненный из кодировки таблицы:
mysqldump -uUSERNAME -pPASSWORD DB_NAME —allow-keywords —create-options —complete-insert —default-character-set=кодировка —add-drop-table > dump.sql

Главное не перепутать кодировку таблиц с кодировкой данных.

Проверьте дамп на правильное отображение кодировки уже в формате данных таблицы, а не самой таблицы, как в пункте 3 (то есть уже не latin1 , а utf8 , например). Скопируйте бэкап дампа отдельно.

В дампе найдите оператор «Create Database» и проверьте, правильная ли в нём кодировка.

Если нет, то исправьте. Тоже самое можно (и лучше сделать) с оператором «Create Table».

Используйте эту команду для заливки дампа, где «кодировка» — параметр данных таблицы ( utf8 , а не latin1 из нашего примера):
mysql -uUSERNAME -pPASSWORD DB_NAME —default-character-set=utf8

На веб-странице сайта найдите функцию mysql_connect , затем mysql_select_db и ниже их размещения добавьте строчку, где «кодировка» — это параметр данных таблицы, а не самой таблицы:
mysql_query(«SET NAMES кодировка»)

Ничего не помогает, проблема кодировки MySQL так и осталась

Объёмный wiki-раздел по кодировке MySQL составили белорусские коллеги, где вы можете получить исчерпывающее описание процесса правильного создания баз данных и таблиц. Ведь именно в этом процессе кроются все причины возникновения проблемы со знаками вопросов MySQL и «крякозябрами» вместо русских букв.

Также обратите внимание и на эти моменты при работе с базами данных

  • правильная ли задана кодировка при создании таблиц (можно использовать любую, но она должна отражать кодировку данных в таблице);
  • правильная ли кодировка у скрипта, работающего с базой данных (кодировка веб-страницы и скрипта должна быть одной);
  • правильная ли кодировка у самого сайта (у веб-страницы и заголовка «Content-Type» сайта она должна быть общая);
  • в правильной ли кодировке сохраняются данные на веб-странице через редактор (выберите в редакторе нужную кодировку, следите за этим).

Не хотите самостоятельно разбираться в настройке MySQL и оптимизировать работу ИТ-инфраструктуры предприятия? Передайте заботы о программном обеспечении в компанию ИТ-аутсорсинга с полноценным ИТ-аудитом и экспертной поддержкой по любым техническим вопросам и задачам.

Источник

Оцените статью