- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Переиграть и победить: как анализировать конкурентов для продвижения сайта
С помощью Ahrefs
Александр Шестаков
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Пытаюсь импортнуть баз городов по методу описанному тут https://anton.logvinenko.site/ru/blog/geo-bazyi-dannyih.html
Все проходит успешно за исключением того что русские названия становятся карабозяками.
Вроде смотрю код скрипта - при создании таблицы указывается утф 8
USE '$database'; CREATE TABLE IF NOT EXISTS '$table' (
`geonameid` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(200) DEFAULT NULL,
`asciiname` varchar(200) DEFAULT NULL,
`alternatenames` varchar(5000) COLLATE utf8_unicode_ci DEFAULT NULL,
`latitude` double DEFAULT NULL,
`longitude` double DEFAULT NULL,
`feature_class` varchar(1) DEFAULT NULL,
`feature_code` varchar(10) DEFAULT NULL,
`country_code` varchar(2) DEFAULT NULL,
`cc2` varchar(2) DEFAULT NULL,
`admin1_code` varchar(20) DEFAULT NULL,
`admin2_code` varchar(80) DEFAULT NULL,
`admin3_code` varchar(20) DEFAULT NULL,
`admin4_code` varchar(20) DEFAULT NULL,
`population` bigint(8) DEFAULT NULL,
`elevation` int(11) DEFAULT NULL,
`dem` int(11) DEFAULT NULL,
`timezone` varchar(40) DEFAULT NULL,
`modification_date` date DEFAULT NULL,
PRIMARY KEY (`geonameid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;'
Скачал базу вручну., посмотрел нотепадом - название нормальные.
Как победить баг?
Почему данные прилетают в кодировке CP1252 ?
Можно попробовать проверить кодировку файла, иногда сохраняется не в той. Ну и перед командой создания/импорта данных добавить команду, принудительно переводящую базу в работу с нужной кодировкой:
SET NAMES 'utf8';
Также можно для секции конфигурации прописать:
[mysqld]
character_set_connection=utf8
и рестартануть мускуль.
Можно попробовать проверить кодировку файла, иногда сохраняется не в той. Ну и перед командой создания/импорта данных добавить команду, принудительно переводящую базу в работу с нужной кодировкой:
SET NAMES 'utf8';Куда точно прописать подскажите?
Также можно для секции конфигурации прописать:
[mysqld]
character_set_connection=utf8
и рестартануть мускуль.
Попробовал - не помогло
Попробовал - не помогло
Перед CREATE TABLE IF NOT EXISTS ...
Будет
SET NAMES 'utf8'; CREATE TABLE IF NOT EXISTS ...
А, только там может быть по строке проблема с кавычками, тогда без них, просто
SET NAMES utf8; CREATE TABLE IF NOT EXISTS ...
---------- Добавлено 26.07.2019 в 19:37 ----------
Посмотрел, там для загрузки распарса другая команда:
$@ --local-infile=1 -e "USE $database; TRUNCATE $table; LOAD DATA LOCAL INFILE
Так что нужно в нее добавить names:
$@ --local-infile=1 -e "USE $database; TRUNCATE $table; SET NAMES utf8; LOAD DATA LOCAL INFILE ..
Попробуйте так изменить скрипт.
---------- Добавлено 26.07.2019 в 19:42 ----------
Ну и последнее, на самом деле импорт может быть проходит как положено. А вот выводится неверно. Часто на сайте для вывода используется указание этой же SET NAMES utf8; в сессии перед получением данных. Т.е. сначала открывается коннект к базе, затем указание кодировки, затем сам select данных.
Я смотрю напрямую в базе что записалось.
К сожалению изменения скрипта тоже не помогло.
---------- Добавлено 26.07.2019 в 20:10 ----------
Решил проблему так:
Вместо
SET NAMES utf8
надо было прописать
SET character_set_database = utf8
По сути еще раз указали кодировку базы.
Ну да ладно, главное, что нашли решение.