Поставил UTF версию WP скачанную с этого сайта. Поставил локально и на платном хостинге. Локально установлен последний denwer(PHP/4.4.2, MySQL 4.1.16). Базу создал с UTF8. Проблемы с большой буквой "И" и с маленькой буквой "ш". "И" заменяется на "п", а "ш" вообще непонятно на что. Та же самая проблема на платном хостинге.
Кто-нибудь уже наступал на эти грабли? Подскажите в чем собака порылась?
ЗЫ. Другой продукт, работающий с UTF8 с той же базой никаких проблем не имеет.
У меня такое было, если менять кодировки в базе. Тогда для старых записей такое бывает. Попробуйте удалить базу данных полностью, а потом создать новую и переустановить ВП.
Дык я и так с нуля поставил. Никаких старых данных, никаких конвертаций. Новые сообщения так и сохраняются.
Тогда можно поэкспериментировать с кодировками при создании базы данных. У меня на хостинге нет таких прав, поэтому база была создана заранее. И кодировка в ней cp1251_general_ci. Но всё работает нормально.
я как раз везде задал UTF8 какой смысл задавать 1251, если надо работать с UTF ?
Это как раз тот случай, когда в базу CP1251 пытаются вставлять юникодовские данные. Я бы рекомендовал вам перейти на Windows-1251 и избавиться от головной боли навсегда. 😉
Не! Давайте решим проблему UTF. Ведь у народа есть системы работающие в этой кодировке! Я еще конечно покопаюсь с кодировками, но знать бы точно в чем косяк.
Понимаете, это не проблема WordPress. Это проблема использования UTF8 на конкретном сервере. Вы сами выбрали эту кодировку, к кому теперь претензии?
Да, но этих серверов два и на обоих та же проблема. И, как я уже сказал, другой продукт, конкретно веб-почта, работающая так же в UTF-8 проблем таких не имеет на обоих серверах. Любые введенные буквы нормально вводятся и сохраняются. Да еще и почта из других кодировок из koi8 и 1251 нормальным образом перекодируется в UTF. Отсюда я делаю вывод, что все-таки что-то не так с WP.
Один из этих серверов локальный :). KOI8 и WINDOWS-1251 – это 8-битные кодировки – с ними по определению проблем не будет. А вот юникод – кодировка сложная, поэтому когда вы в 8-битную кодировку пытаетесь всунуть юникод, то где-то и идет сбой. Эти "ш" и "и" уже классикой стали. Всё дело в базе данных.
Нарыл я в чем корень зла. Может кому-нибудь еще поможет это знание.
Проделал рекомендуемые шаманские действия. Как то:
1. прописать во все команды CREATE TABLE … DEFAULT CHARSET=utf8
2. добавить команду после подключения к базе – mysql_query("SET NAMES ‘utf8’ COLLATE ‘utf8_general_ci’")
А зло оказалось в опции MySql сервера: default-character-set = cp1251
которая устанавливает следующие переменные сервера ( их можно посмотреть в PhpMyAdmin)
character_set_database и character_set_server
команда же SET NAMES меняет переменные character_set_client, character_set_results, character_set_connection
и б@#ть, пока не поменяешь глобальную переменную в настройках MySQL сервера default-character-set = cp1251
на default-character-set = utf8 счастья с сабжевыми буквами нет. Т.е. если на хостинге прописано у сервера 1251, то хоть забодайся – счастья не будет. Все выше сказанное опробовалось на MySQL сервере версии 4.1.16
🙁 😡
ЗЫ. на последнем 4.1.21 MySQL сервере такая же байда. Похоже надо писать в сапорт MySQL
ЗЗЫ. Накидал на PHP тест, который создает таблицу в той же базе, пишет и читает русский в UTF8. Нету такой проблемы с любой установкой default-character-set. Значит косяк где-то в WP. Я эту с$#у добью.
ЗЗЗЫ. Все порешалось первые два пункта достаточны для решения проблемы.
У меня проблема оказалась – не в то место добавил SET NAMES – лучшее место в конце конструктора wpdb перед вызовом селекта базы.
to MAX: будешь делать UTF дистрибутив, плиз сделай это сразу.
У меня наоборот, поставил win добавил руссифицированную шкуру, стала закарючки показывать
шкура в юникоде. руками править все темплейты. по другому никак.
ссылку дайте хоть посмотреть, что конкретно глючит.
Не подскажете, куда это прописывать? Прямо в базу или в bd.php?
извините за тупой вопрос а где это менять?:)