1

Тема: Почему когда я указываю ....

в php My admin значения на русском языке - то вместо русских букв у меня появляться знаки вопроса(???) ?

( мне надо восстановить темы форума - которые у меня на русском языке , )

2

Re: Почему когда я указываю ....

arbr
То есть в phpMyAdmin вы меняете данные в таблицах, которые относятся к форуму и при вставке кириллицы на форуме выводятся вопросики?

А что phpMyAdmin выводит вместо кириллицы до редакции?

3

Re: Почему когда я указываю ....

Сначала php my admin  выводил тоже знаки вопроса, но когда я в php my admin изменил кодировку на cp1251_general_ci, то он  стал выводить русские буквы, но на форуме все равно остаются знаки вопроса вместо русских букв

4

Re: Почему когда я указываю ....

arbr
Вероятно у вас перепутаны кодировки.

В phpMyAdmin выполните следующий SQL запрос и покажите его вывод.

SHOW GLOBAL VARIABLES LIKE 'char%';

Выберите любую таблицу, в которой содержится кириллица, перейдите на страницу экспорта, сделайте текстовый дамп (не отмечайте "Сохранить как файл"). Скопируйте структуру таблицы и то как выглядит кириллица.

5 (изменено: Hanut, 2008-11-26 15:07:08)

Re: Почему когда я указываю ....

1 На ваш запрос выдает

SQL-запрос:
SHOW GLOBAL VARIABLES LIKE 'char%';

character_set_connection     latin1
character_sets_dir     /usr/share/mysql/charsets/

2 Структура таблицы phpbb_users

-- phpMyAdmin SQL Dump
-- version 2.11.9.1
-- Версия сервера: 4.1.22
-- Версия PHP: 5.2.6

CREATE TABLE IF NOT EXISTS `phpbb_users` (
...
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

'??????', '????? ??????'

6

Re: Почему когда я указываю ....

arbr
Ошибки:
1) character_set_connection latin1 - Это означает, что кодировка соединения с MySQL у вас выставлена в latin1, а сайт работает с cp1251 (windows-1251).
2) В структуре таблицы присутствует DEFAULT CHARSET=latin1, а кодировка таблиц должна быть cp1251.
3) ??????? - Это крякозябы. Так выглядит кириллица, когда она сохраняется в таблицы с кодировкой соединения latin1, вместо cp1251.

Если необходимо сделать данные дампа работоспособными, то придется помучиться.

Что касается настройки корректной кодировки соединения с MySQL, то при доступе к конфигурационному файлу (my.cnf), в раздел [mysqld] необходимо добавить строку:

init-connect="SET NAMES cp1251"

Но данные форума это не вернет. Их можно только перекодировать.

7

Re: Почему когда я указываю ....

Вы написали

Но данные форума это не вернет. Их можно только перекодировать.

- Можно об этом по подробнее.

8

Re: Почему когда я указываю ....

arbr
Отправил скрипт перекодировки, который необходимо использовать.
1) Данные в дампе должны быть в utf-8. Посмотреть это можно в любом текстовом редакторе, например, Notepad++. Как я понимаю у вас так и есть.
2) Распаковываем скрипт и кладём дамп в каталог upload.
3) Запускаем скрипт iconv.php, отмечаем "From Upload Directory" и выбираем файл. В разделе "Output file" пишем имя конечного, перекодированного файла (будет сохранен в корне скрипта). Можно отметить галочку "Overwrite".
4) В блоке "Convert Encoding" выбираем: From: utf-8 -> To: iso-8859-1.
5) Пробуем, жмем "Convert". Если вылезает ошибка "Error: Detected an illegal character", отмечаем галочку "Illegal Characters" и пробуем еще раз, если ошибка повторяется, то выставляем радиокнопку в "IGNORE".
6) Отмечаем галочку "Replace Strings" и в появившемся разделе нажимаем кнопку "Character Set", выбираем там пару на замену latin1 -> cp1251. Попробуйте также добавить пару на Collation: latin1_general_ci -> cp1251_general_ci.
7) Жмем "Convert" и получаем готовый дамп. Проверяем отображение кириллицы и если все нормально, то импортируем дамп с помощью phpMyAdmin. Перед импортом необходимо добавить в конфигурационный файл MySQL, строку устанавливающую кодировку соединения.

9

Re: Почему когда я указываю ....

Скрипт все время выдает ошибку "Error: Detected an illegal character" ,   - я перепробовал вроде все варианты , но не получилось.

10 (изменено: Hanut, 2008-11-27 15:08:33)

Re: Почему когда я указываю ....

Кстати - я его загрузил на свой сервер  -  iconv.php    - может у вас получиться перекодировать файл  localhost.sql

11

Re: Почему когда я указываю ....

arbr
На вашем хостинге не установлено расширение iconv для PHP. Скрипт вы использовать не сможете. Пришлите дамп на мою почту (заархивируйте в zip или 7z .sql файл) - сделаю.
Обязательно удалите сам скрипт iconv.php с хоста.

12

Re: Почему когда я указываю ....

А что за расширение - эти права доступа на файл что ли?

13

Re: Почему когда я указываю ....

arbr сказал:

А что за расширение - эти права доступа на файл что ли?

iconv - это компонент PHP. С его помощью можно работать с различными кодировками.