Автор Гілка: PHP + MySQL encoding  (Прочитано 3675 раз)

Відсутній Satan

  • Кореспондент
  • ***
  • дописів: 141
  • Карма: +0/-0
  • C++ Guru
PHP + MySQL encoding
« : 2007-09-24 15:58:24 »
я тут написав невелику статейку на тему боротьби із кодуванням для Web розробки

http://sergiy.vynnychenko.com/blog/?p=18
Ubuntu 8.04

Відсутній anatolijd

  • Графоман
  • ****
  • дописів: 325
  • Карма: +0/-0
Re: PHP + MySQL encoding
« Відповідей #1 : 2007-09-24 20:25:12 »
ну нічо, вітаю  ;)

а мені більше отой лінк сподобався, особливо про " Как привести "неправильную" БД к корректному виду и избавиться от проблем с выполнением запросов"
http://www.linux.by/wiki/index.php/FAQ_PHP_MySQL_charset

Відсутній Satan

  • Кореспондент
  • ***
  • дописів: 141
  • Карма: +0/-0
  • C++ Guru
Re: PHP + MySQL encoding
« Відповідей #2 : 2007-09-25 01:53:42 »
ну той лінк як на мене має занадто академічну форму... а я ж намагався торкнутись тільки найважливіших аспектів... тобто цієї інформації має бути достатньо щоб не мати жодних проблем в найбільш розповсюджених ситуаціях (тобто щоб PHP і MySQL працювали з одним кодуванням і не порібно мати в одній таблиці інформації в кількох кодуваннях)...

для маньяків я все ж навів лінк... доречі дуже кльовий лінк - якби він мені потрапив до рук раніше я би уникнув багатьох проблем ))
Ubuntu 8.04

Відсутній noddeat

  • Кореспондент
  • ***
  • дописів: 197
  • Карма: +0/-0
Re: PHP + MySQL encoding
« Відповідей #3 : 2007-09-25 12:09:19 »
ну це якщо тільки починаєш проект. У мене з історичних причин:
- текстові сторінки в cp1251
- таблиці у БД мають кодуванн latin_swedish, а інформація у них зберігається в cp1251
і крутиться це на лінуксі з локаллю utf8, ага.

коротше, розгардіяш, але поки все працює, ліньки перекодовувати
Filenames are infinite in length, where infinity is set to to 255 characters. Peter Collinson, "The Unix File System"

Відсутній Satan

  • Кореспондент
  • ***
  • дописів: 141
  • Карма: +0/-0
  • C++ Guru
Re: PHP + MySQL encoding
« Відповідей #4 : 2007-09-25 15:34:34 »
перенести все на одне кодування займе не більше 30 хвилин )) звісно якщо код написаний без серйозних порушень ООП... я недано тренувався )) зараз у мене ця процедура займає не більше 5 хвилин )
Ubuntu 8.04

Відсутній anatolijd

  • Графоман
  • ****
  • дописів: 325
  • Карма: +0/-0
Re: PHP + MySQL encoding
« Відповідей #5 : 2007-09-26 12:20:17 »
У мене з історичних причин:
- текстові сторінки в cp1251
- таблиці у БД мають кодуванн latin_swedish, а інформація у них зберігається в cp1251
і крутиться це на лінуксі з локаллю utf8, ага.

коротше, розгардіяш, але поки все працює, ліньки перекодовувати

Це точно, і таких випадків - масса.
Береш любий український/російський сайт який хоститься на шаред-хостингу за бугром, і маєш.
Поки воно працює - дійсно ніяких проблем.

Але бачив я випадок коли треба було терміново довнгрейдити мускл з 5.0 до 4.1 (бо деякі сайти перестали працювати після апгрейду 4.1 до 5.0) ...  ::)

Підставити стару ~mysql/  не вдалося (хоча іноді таке "проканує"), довелось робити mysqldump для всіх баз (десь біля 400 ), шо згенерувало дамп файл більше 2Г.
 
Так от при імпорті почались еррори типу:
Цитата
ERROR 1062 (23000) at line 261247: Duplicate entry '????' for key 1
якраз і повязані з кодуванням...

Конвертування дамп-файлу з iconv не дуже допомогло, при імпорті знову такі самі помилки але вже в інших місцях... Виявилось , шо є бази даних в різних encoding...  :-(  Частину сайтів з тих що все ж завантажились, почали показувати каракулі, читати їх можна було лише змінивши вручну енкодінг в бровзері...

Довелось вичисляти encoding для кожної окремої бази даних, дампити в окремі файли, конвертувати їх при потребі, і лоадити в mysql з опцією --default-character-set=$encoding ...  :-/

Шо можна було - заскриптували, але при такій кількості баз downtime всеодно вийшов відчутний  
Тому то й звернув увагу на той лінк, бо своє згадалося ...  ;)