Что то вообще запутался с кодировкой, делаю какие то костыли-грабли и всёравно не то. Подскажите пожалуйста как правильно то? Собственно пишу скрипт, который пишет и читает данные из базы данных, содержимое как на русском так и на английском. Поля в базе данных имеют кодировку utf8_general_ci. Скрипт пишу в PHP Expert Editor, там внизу есть возмжность выбора как сохранять в UTF-8(или ANSI) и платформа(UNIX или Windows). Ставлю UTF-8 и UNIX. Хостинг обычный платный, там у меня сайт на WordPress прекрасно крутиться. Проблема 1. Когда в скрипте вывожу на экран текст echo "текст русский"; то получаю крюкозябры. Поставил вначале костыль Код (Text): header('Content-Type: text/html; charset=cp1251'); Вроде поправилось. Проблема 2. Пишу данные в базу данных, что то типа Код (Text): $dbh = mysql_connect($host, $user, $password) or die("Ошибка"); $result = mysql_query(INSERT INTO `Tables` (`ID`) VALUES ('текст русский'); ); то получаю в базе данных крюкозябры. Поставил костыль перед выполнением запроса Код (Text): mysql_query("SET NAMES 'cp1251'"); Вроде тоже поправилось. Проблема 3. Пишу данные ещё и в XML файл Код (Text): $xml = new DomDocument('1.0','utf-8'); ... $Element->setAttribute("Name", "текст русский"); // ругается на эту строку string is not in UTF-8 $xml->save('xmlfile.xml'); Если ставлю костыль $Config ->setAttribute("Name", utf8_encode("текст русский")); получаю крюкозябры Пробовал $xml = new DomDocument('1.0','cp1251'); но тоже крюкозябры К проблеме 3 я думаю костыль то найду, но мне кажется, что я чего то не понимаю, и можно обойтись без этих вот манипуляций. Подскажите как сделать правильно и грамотно(а не так что бы просто "работало" с костылми).
Это нормально, можно по умолчанию в ini установить эти параметры, но не на всех хостингах такое дают сделать header('Content-Type: text/html; charset=cp1251'); mysql_query("SET NAMES 'cp1251'"); // только функции mysql_* устарели если везде utf8 то странно почему работает при указании cp1251
просто все свои данные в юникоде. тогда будет проблема только с данными которые допустим с других сайтов тащим. но там легко будет перегнать в юникод.
Спасибо за информацию. Сейчас ещё нагуглил, наткнулся на тему http://phpforum.su/index.php?showtopic=27289, тоже мозги немного подправила. Сейчас везде поставил utf-8 и всё заработало.