Зустрів досить незвичайну (можливо, тільки для мене) проблему з кодуванням:
phpbb 1.52 Plus - встановлений на MySQL 4.1 PHP 4 - встановлений за замовчуванням російським
Є База Даних кодування таблиць cp1251_general_ci
всі мовні файли відображаються нормально, всі зміни російською, що вносяться через адмін. панель або ж будь-які повідомлення та інше відображаються коректно (вихідний код сторінок йде з кодуванням windows-1251)? а той же самий текст в базі даних замінюється на знаки питань "."
з іншого боку, якщо намагатися залити дані російською через БД, то в phpMyAdmin БД вони відображаються коректно - в кодуванні cp1251, а на форумі і порталі з'являється нісенітниця у вигляді питань "."
Латиниця відображається коректно
Кирилиця з мовних файлів відображається коректно
Кирилиця з БД не відображається
Питання: в чому може бути причина такого збою? Перший раз за 3 роки таке зустрічаю.
Буду вдячний за допомогу.
Версія MySQL 4.1. підтримує Unicode на вбудованому рівні, кодування з ім'ям win1251 усунена замість неї - cp1251. Крім того, остання версія phpMyAdmin містить безліч помилок, які виявляються при роботі з MySQL 4.1 в кодуванні, відмінною від UTF-8. Ось на ці граблі ви мабуть і наткнулися. Раджу скачати і висмикнути з дклабовского Денвері тамтешній phpMyAdmin - хлопці здорово поправили його для сумісність.
Ще дещо какака інформація MySQL 4.1.5
phpMyAdmin вбудований версії 2.6
намагався працювати через денверовскій - нуль ефекту. та ж дурниця:
правда тепер з'ясувалося ось що
параметр character_set_server має значення latin1 я так розумію це і є вихідна причина збою :(
Треба мабуть було заливати базу тим-же софтом і той-же версії що і бекап. Якщо у файлі бекапа все відображається коректно, в адмін MySQL-кодування: Windows Cyrillic (cp1251) а Зіставлення з'єднання з MySQL: cp1251_general_ci - character_set_server не повинен впливати.
Тобто. При версії м'яз MySQL 4.1.5 всі дані в ньому зберігаються в форматі utf-8. Значить база даних повинна ОБОВ'ЯЗКОВО створена з підтримкою cp тисяча двісті п'ятьдесят-одна
* CREATE DATABASE `ІМЯ_MySQL_БД` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci
Далі повний гимор - дані зберігаються як 1 251 переводяться самої бд в utf і навпаки при виведенні. При редагуванні в пхпадміне ніби-б показує все правильно, однак насправді під час запису відбувається херня, і при виведенні скриптом форуму відображається абракадабра.
Коротше якщо дорога база, воюйте з кодуваннями. Пхпадміном базу не правте, хоча саме дклабовскій позбавлений багатьох проблем з кодуваннями.
Треба мабуть було заливати базу тим-же софтом і той-же версії що і бекап. Якщо у файлі бекапа все відображається коректно, в адмін MySQL-кодування: Windows Cyrillic (cp1251) а Зіставлення з'єднання з MySQL: cp1251_general_ci - character_set_server не повинен впливати.
Тобто. При версії м'яз MySQL 4.1.5 всі дані в ньому зберігаються в форматі utf-8. Значить база даних повинна ОБОВ'ЯЗКОВО створена з підтримкою cp тисяча двісті п'ятьдесят-одна
* CREATE DATABASE `ІМЯ_MySQL_БД` DEFAULT CHARACTER SET cp1251 COLLATE cp1251_general_ci
Далі повний гимор - дані зберігаються як 1 251 переводяться самої бд в utf і навпаки при виведенні. При редагуванні в пхпадміне ніби-б показує все правильно, однак насправді під час запису відбувається херня, і при виведенні скриптом форуму відображається абракадабра.
Коротше якщо дорога база, воюйте з кодуваннями. Пхпадміном базу не правте, хоча саме дклабовскій позбавлений багатьох проблем з кодуваннями.
Ось що цікаво, на попередньому серваке запит SHOW VARIABLES показував таку інфу, на колишньому ж сервері Мускл був тією ж версією, але працював як годинник без проблем:
character_set_client cp1251
character_set_connection cp1251
character_set_database cp1251
character_set_results cp1251
character_set_server cp1251
character_set_system utf8
character_sets_dir / usr / local / share / mysql / charsets /
Знову ж бекапная база на локалхосте на машині встала без проблем і ніяких проблем з кодуваннями немає і той же запит показує:
character_set_client cp1251
character_set_connection cp1251
character_set_database cp1251
character_set_results cp1251
character_set_server cp1251
character_set_system utf8
character_sets_dir \ usr \ local \ mysql4 / share / charsets
Не може ж бути таких збігів?
як завжди не виходить створити нову тему - напишу в цій
коли вперше намагався встановити phpbbplus на рідного Денвера вилізла бяка з кодуваннями
форум не працював - запитати було Неукен
все російське писалося кроказяблікамі
перерив весь інет, повпісивал вручну кодування в mysql, phpmyadmin - всюди де міг - не допомагало
\ Db \ mssql.php
\ Db \ mysql.php
\ Db \ mysql4.php
з натхнення повносіл в них якісь зміни (щось на зразок примусового вибору кодування при зверненні до бази) і все запрацювало
тепер весь форум висить на нормальному російською, за виключення кілька моментів
Наприклад, є опитування - варіанти в опитуванні пишуться російською, людина голосує - відразу після цього з'являється сторінка з результатами голосування - бум КРОКАЗЯБЛІКІ - натискаєш оновити сторінку - і знову російська
як я розумію потрібно ще десь підправити перераховані вище файли щоб все було повністю ОК
P.S. phpbb форум все життя стояв на рідному Денвері і все було ок.
P.S.S. змінив вже 3 веб збірки (зараз Topserver)? а глюк на старому місці
SCALOlaz
Наша людина
Дивно. У мене 1.53а відразу оре російською, без проблем і заблукав.
Ви не думаєте, що теперішні глюки - результат ранніх правок?
Це просто питання, кричати і бити по шапці не треба. YOу.