Проблема импорта баз
#1
Отправлено 29 июля 2007 - 10:49
Ну короче такая проблема.
Слова при импорте из Access импортируются в mysql5 нормально, русские буквы и английские (другие символы как ü õ ö ä - заменяются иероглифами).
Пример: www.octanus.com/octstand/fr/portuguese.php
Нужно с импортировать файл - Русско-Английскую базу
www.octanus.com/developer/files/Octanus.xls
Дело в том, что если я добавляю слова через веб форму, то всё работает нормально, все национальные буквы на своих местах.
А если просто импортирую из такой базы, то русские буквы будут на сайте выводится ? знаками вопроса.
Но одновременно в phpmyadmin'е они пишутся правильно.
Весь сайт в кодировке utf-8
и mysql тоже в utf-8_bin.
Мож у кого была такая ситуация подскажите плиз.
Пока.
#3
Отправлено 30 июля 2007 - 20:24
Пишу такой код
mysql_query("SET NAMES 'utf-8'"); // эту строчку и добавил
$key = "ID";
$q="SELECT * FROM base ORDER BY $key LIMIT $start,$per_page";
Но результат таков, что всеровно будут выводится ? знаки вопроса.
Сообщение изменено: Alex5 (30 июля 2007 - 20:24 )
#6
Отправлено 31 июля 2007 - 08:57
CREATE TABLE `base` (
`ID` int(11) NOT NULL auto_increment,
`rus` text NOT NULL,
`russian` text NOT NULL,
`italian` text NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=362 ;
--
-- Дамп данных таблицы `base`
--
INSERT INTO `base` VALUES (1, 'russian', 'italian', '');
INSERT INTO `base` VALUES (2, 'a', 'Р° ', 'e, ma, mentre, invece eppure, ma, pero mentre, intanto e, ma eh ah');
INSERT INTO `base` VALUES (3, 'абажур ', 'абажур ', 'paralume');
INSERT INTO `base` VALUES (4, 'аббат ', 'аббревиатура ', 'abbreviazione, sigla');
INSERT INTO `base` VALUES (5, 'абзац ', 'абзац ', 'alinea capoverso paragrafo, capoverso, comma albicocco albicocca');
INSERT INTO `base` VALUES (6, 'абонент ', 'абонент ', 'abbonato, utente');
и т.д ...
Значит на уровне таблицы всё ок.
Вообще-то у меня кодировка не utf-8_bin
а utf-8_unicode_ci - кодировка всей базы
может в этом проблема?
А насчёт CREATE DATABASE - боюсь такое невозможно - хостинг такого не позволяет - он автоматически в cpanel создаёт базу.
#7
Отправлено 08 августа 2007 - 19:28
А теперь ответ на этот вопрос
<?
$hostname = "localhost";
$username = "root";
$password = "пароль";
$database = "база";
/* создать соединение */
$db_link =mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
/* Таблица MySQL, в которой хранятся данные */
$userstable = "таблица";
mysql_select_db($database) or die(mysql_error());
mysql_query ( "set character_set_client='utf8'", $db_link );
mysql_query ( "set character_set_results='utf8'", $db_link );
mysql_query ( "set collation_connection='utf8_general_ci'", $db_link );
...
?>
Вот и всё.
Удачи
Сообщение изменено: Alex5 (08 августа 2007 - 19:29 )
#8
Отправлено 10 августа 2007 - 10:06
Ты придумал кодировку
которой в mysql нет. Есть utf8.utf-8
А то решение которое ты предлагаешь слишком громоздкое, ибо в мануале сказано:
A SET NAMES 'x' statement is equivalent to these three statements:
SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;
а калейшен тоже стандартный и вручную его выставлять не надо:
utf8 | UTF-8 Unicode | utf8_general_ci
#9
Отправлено 10 августа 2007 - 10:22
Вот только 18000 записей в файле с экспортировать не удаётся.
Вчера 3 часа перекачивало из access в mysql и в итоге всего 2400 рядов - т.е 4800 слов.
Что интересно - если экспортировать файл например размером в 3000 рядов то с экспортируется за пол часа и полностью
Короче буду искать конверторы.