Категория: Windows: Базы данных
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору При сортировке данных не выводятся русские слова, а выводится всякая фигня. Изменил my.ini но всё равно ничего не происходит
basedir=C:/server/mysql
#set-variable=key_buffer=16M
character-sets-dir=C:/server/mysql/share/charsets
language=C:/server/mysql/share/russian
default-character-set=cp1251
[WinMySQLadmin]
Server=C:/server/mysql/bin/mysqld-nt.exe
password=password
При попытке что либо сделать появляется это.
c:\server\mysql\bin\mysqladmin: File 'C:\mysql\\share\charsets\?.conf' not found
(Errcode: 2)
c:\server\mysql\bin\mysqladmin: Character set '#14' is not a compiled character
set and is not specified in the 'C:\mysql\\share\charsets\Index' file
Странно то что у мя Mysql установлен в папке C:\server\mysql а он ищет в папке C:\mysql
Подскажите мош я что то неправильно сделал.
Здравствуйте fidget, Вы писали:
F>Здравствуйте theswordfish, Вы писали:
T>>Не знаете почему при сохранении строковой переменной String (Java) в переменную VARCHAR(100) (MySQL) русский язык не сохраняеться, вместо этого какая-то билиберда. Что делать?
F>MySQL ничего не меняет, что ты в базу положил, тоу тебя и будет храниться.
F>проверь что ты добавляешь и как это потом выводишь (и чем).
Спасибо за столь "обстоятельный" ответ.
Может он и старается хранить, то что в него "кладут", да не очень понятно получается. К примеру когда добавляешь стручку к таблице через mysql.exe как то:
а потом делаешь SELECT все в полном порядке, но когда выбираешь эту строчку програмно, через jdbc:mysql, то русский текст теряеться. Странность вся в том, что если добавляешь русский через тот же jdbc (а он кстати взят с сайта mysql) он в БД не храниться как русский, а как билиберда, как я и говорил, пытаюсь прочитать — опять чушь. Только драйвер ODBC работает. Записывает русский в БД. mysql.exe на SELECT выводит разную чушь (точно на русский не похоже), а когда прочитываешь эту чушь через jdbc:mysql опять получаешь русский язык.
Так, что говорить, что с MySQL все ОК, что-то рановато, пока уважаемые коллеги не решим, что все-таки происходит.
Может попытаться взять MySQL с русского зеркала? А то я сцапал с английского, русский не работал. Но, что-то я сомневаюсь, что какая-нибудь разница будет.
Re[3]: MySQL & Java (проблема с русским языком)
MySQL - многопользовательский, многопоточный сервер базы данных SQL. SQL (Structured Query Language) - наиболее популярный и стандартизированный язык баз данных в мире, который упрощает доступ к данным. Например, Вы можете использовать SQL для хранения и быстрого доступа к информации о клиенте Вашего сайта. MySQL также быстр и достаточно гибок при использовании его для хранения файлов и изображений. Главные цели MySQL - скорость, устойчивость и легкость в использовании.
Для начала работы с базой данных, Вам необходимо заказать логин и пароль доступа к сервер MySQL, заказать можно по e-mail
Проверьте правильно ли Вы ввели те данные что Вам выслали
PHP - это удобный язык программирования, предназначенный для встраивания в web-страницы. На Вашем сервере PHP собран с поддержкой соединений с MySQL. Ниже приводится фрагмент php-документа.
Дополнительную информацию по использованию функций для работы с MySQL из php можно получить по следующему URL:
Да, можно. Для этого Вам необходимо написать письмо на тех отдел и попросить открыть доступ для Вас с других машин
Вопрос с поддержкой русского возникает при попытке сортировать данные на русском языке в базе. Для того чтобы сортировка работала корректно необходимо помещать данные в базу в кодировке koi8-u
Для этого Вы можете воспользоваться phpMyAdmin.
Это - некоммерческое приложение, написанное на языке PHP, реализующее довольно удобный и функциональный Web-интерфейс к базе данных Mysql.
Скачать phpMyAdmin можно двумя путями:
ОБЯЗАТЕЛЬНО ОПРЕДЕЛИТЕ ПЕРЕМЕННУЮ $cfg['Servers'][$i]['only_db']. Туда поместите название Вашей базы данных, которое соответствует Вашему техническому логину! Если это не будет сделано, программа phpMyAdmin будет пытаться выполнить команду show databases, а у Вас нет для этого прав, так как Вы можете работать только со своей базой данных, а получать доступ к списку чужих баз данных, соответственно, не можете.
Ниже приводится список полезных ссылок на сайты посвященные MySQL.
Данная "проблема" ждёт пользователей MySQL версии 4.1 и выше, которые никогда не пытались читать документацию.
Первым делом нужно проверить, что установлено нужное сопоставление (collation) для текстовых полей в таблице. Именно в установленной кодировке хранятся данные. Если для полей выставлена "неправильная" кодировка, то измените её. В phpMyAdmin это можно сделать при редактировании столбца таблицы, выбрав нужное значение из списка Сравнений. Для русский символов это может быть, например, cp1251_general_ci (основная регистронезависимая cp1251). Для UTF-8 - utf8_general_ci.
Теперь нужно выставить кодировку соединения с сервером. В MySQL есть выражение SET NAMES, предназначенное специально для этого:
[sql]SET NAMES 'cp1251';[/sql]
Выполнить данный запрос нужно сразу после подключения к серверу.
[php]<?php
mysql_connect('server','user', 'pasw') or die('Connection error.');
mysql_query("SET NAMES 'cp1251'");[/php]
После этого все данные будут приходить в установленной кодировке. Кодировку соединения можно менять:
[sql]SET NAMES 'utf8';[/sql]
В этом случае данные будут приходить в UTF-8, никак не затрагивая данные в таблице, которые могут храниться в другой кодировке. Следите за тем, чтобы весь остальной текст на странице тоже был в UTF-8.
Никита Радионов
Переименовываю "название" в wordpress с английского в русский - появляются вопросы (только то, что связно с майскл, в другом все ок)
так вот, если в майскл переименовать то тоже появляются вопросы. Что делать?
поменял базы майскла на утф8 - ничего не поменялось
С кодировкой определись в базе
Лайт Ягами
При подключении к MySQL первым запросом выполняй SET NAMES 'utf8'
Если у тебя готовый какой-то движок - поищи в исходниках вызов функции mysql_connect и после него сунь mysql_query("SET NAMES 'utf8'");
Кодировку надо поменять, на поддерживающую кириллицу UTF-8
иностранцам кириллица не нужна, поэтому и кодировка стоит для них)
Павел Ихалайнен
Еще хорошо помогает index шаблон в utf-8 перевести и в мета указать utf-8 кодировку для браузера да и база в utf-8 должна быть. Можно конечно в htaccess добавить строчку AddDefaultCharset utf-8 первой строкой например
Владислав Бирюков
Скрнфигурируй базу через MySQL Server Instance Config Wizard. Он устанавливается вместе с СУБД. Укажи там кодировку вместо latin1 либо cp1251 либо utf8
Всем доброго времени суток!
Отчаялся искать в интернете ответ, поэтому пишу здесь)
Создана utf8 таблица в бд:
require_once $_SERVER['DOCUMENT_ROOT']."/php/mysql_connect_private.php";
@mysql_connect_private();
`password` VARCHAR(40),
`name` VARCHAR(30),
`surname` VARCHAR(40),
`avatar` VARCHAR(50),
PRIMARY KEY (`user_id`)) ENGINE=MyISAM CHARACTER SET=utf8";
mysql_query($string) or die(mysql_error());
mysql_query("ALTER TABLE `users` ADD INDEX (`user_id`)") or die(mysql_error());
mysql_query("ALTER TABLE `users` ADD INDEX (`email`)") or die(mysql_error());
В таблицу делаем инъекцию при регистрации пользователя:
$string = "INSERT INTO `users` (`user_id`, `email`, `password`, `name`, `surname`) VALUES ('0', ";
$string .= "'".mysql_real_escape_string($_REQUEST['email'])."', ";
$string .= "'".mysql_real_escape_string(md5($_REQUEST['password']))."', ";
$string .= "'".mysql_real_escape_string($_REQUEST['name'])."', ";
$string .= "'".mysql_real_escape_string($_REQUEST['surname'])."')";
echo $string;
mysql_query($string) or die(mysql_error());
INSERT INTO `users` (`user_id`, `email`, `password`, `name`, `surname`) VALUES ('0', 'test10@test.com ', '098f6bcd4621d373cade4e832627b4f6', 'Mihail', 'Баженов')
- Проверял и русский и английский языки.
В итоге в БД фамилия на русском языке не заносится - пусто.
Если вручную через phpmyadmin заношу фамилию, то все нормально.
В итоге, что делать?) Понимаю, что ответ, скорее всего, прост, но уже убил час на поиск решения и тщетно.
Кстати, комментарии по правильному оформлению тоже приветствуются) Может что не так написано с точки черния защиты/правильно оформления. Спасибо!
П.С. Подключение к базе:
function mysql_connect_private()
$addr = "localhost";
$user = "____";
$pass = "____";
$db = "____";
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_connection='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set character_set_database='utf8'");
mysql_query ("set collation_connection='utf8_bin'");
Отображается при вытаскивании из базы вручную внесенная фамилия на русском тоже иероглифами.
Также, в процессе передачи данных к скриптам везде проверил работающую с mysql кодировку:
$z = mysql_fetch_array(mysql_query("SHOW VARIABLES LIKE 'character_set_database'"));
<meta http-equiv="Content-Type" content="text/html"; charset="utf8">
Ситуация в следующем, в диалплан хочу вывести данные на русском языке из базы mysql через odbc.
Asterisk 1.8.12.2 на debian 6, mysql 5.5.35-0+wheezy1 кодировка UTF-8 Unicode (utf8). База данных из которой тяну данные сравнение с utf8_general_ci, в таблице аналогичная кодировка. В debian установлена так же utf8.
С настройками проблем нет:
/etc/odbc.ini:
/etc/asterisk/res_odbc.conf:
Сама функция в /etc/asterisk/func_odbc.conf:
При использовании функции в диалплане:
Вместо русского слова появляются знаки вопроса. Английский текс выдает корректно.
Решил, что это проблема идет в связки сервера, астериска. Попробовал решить.
Самое интересное, что на этом сервере, был сайт на русском языке, как я загрузил его на сервер вместо русского так же были знаки вопроса. Решил эту проблемы подавлением следующих строк в код php подсоединения к базе mysql:
Естественно и в этот раз копать в эту сторону.
В результате поиска в гугле добавил в файл /etc/mysql/my.cnf следующие строки:
После этого, сайт на русском стал отображаться без знаков вопроса (базы сайта и ту которую я пытаюсь использовать в одинаковых кодировках выше описанных) да же с законченными строками по настройки кодировке.
Сейчас на сервере по кодировкам, после редактирования настроек mysql имею следующую картину:
Но текст из БД по odbc по прежнему идет знаками вопроса.
В файле /etc/locale.gen:
/etc/asterisk/extensions.conf:
Проблемы с кодировкой в MySQL
phpMyAdmin: вопросики в базе MySQL
Не отображается русский язык в MySQL
Рассмотрим ситуацию, когда вам нужно восстановить сайт из дампа MySQL .
Ваш сайт на национальном языке и, допустим, вы не знаете в какой кодировке был сохранен дамп.
Для начала проверим кодировку файла.
Для этого откроем его в любом HTML редакторе (или notepad) и в меню выберем «Сохранить как» (Save as).
Посмотрите в нижнюю строчку – там указанна текущая кодировка фала. Если MySQL должен работать с другой кодировкой или на сайте, например, используется UTF-8, то просто пересохраните файл в нужной кодировке и все. Не делайте это с использованием Word'а .
С кодировкой дампа разобрались, заодно открыли его и проверили, что в тексте виден русский, и можно продолжать.
Если в дампе только вопросики и русского там не видно, то продолжать нет смысла – дамп битый. И нужно сделать еще один, возможно, с другими настройками в phpMyAdmin.
После создания базы MySQL (см. демо ролик, как создать базу MySQL ) переходим в phpMyAdmin, вкладка «Операции» (цифра 1 на картинке) и первым делом меняем дефольтную кодировку базы latin1_swedish (цифра 2) на подходящую нам. Например, на русскую - cp1251_general_cs.
Получаем подтверждение, что «MySQL запрос был выполнен», желающие могут выполнить это с помощью запроса ALERT DATABASE (он виден на экране) и переходим к следующему этапу – вкладке «Импорт» (3).
Но прежде чем импортировать файл с дампом в MySQL нам нужно объяснить базе, на каком языке с ним работать. Поэтому мы выбираем (4) cp1251 (это Кириллица) и только после этого переходим непосредственно к импорту (5).
Если все в порядке и не произошел, например, обрыв связи или ваш дамп не содержит запрещенной к использованию в MySQL последовательности символов, то мы получаем очередное подтверждение, что «Импорт успешно завершен» и теперь в нашей базе есть русский.
При этом вас не должно смущать, если после завершения операции в phpMyAdmin'е в окошке появится другая кодировка. Она не имеет отношения к делу, т.к. она появляется после .
Существует правда еще одна причина, по которой, даже если у вас в базе есть русский, то на сайте вы все равно получите вопросики: Нужно объяснить коду php что в БД русский.
Для этого найдите, где в вашем коде где происходит подключение к БД и перед коннектом добавьте строчку mysql_query('SET NAMES cp1251');
Ну, или mysql_query("SET NAMES utf8 COLATE utf8_general_ci"); если вы собираетесь использовать UTF-8. В этом случае на всех предыдущих этапах вы тоже должны были указать UTF-8.
Если результат коннекта к БД записывается в переменную, например, $result, то перед самим коннектом в эту же переменную запишите:
$result = mysql_query('SET NAMES cp1251');
Если вы нигде не ошиблись и ничего не пропустили, то теперь все должно работать правильно и вопросиков на вашем сайте больше не будет.