1

Тема: Кодировка в таблице базы, прошу совета.

Ребят, прошу прощения, если вопрос дурацкий.

Вкраце. Попросили сделать простую форму обратной связи. Я создал простую таблицу с полями для нее:

http://savepic.org/5056312.jpg

В поле name, после ввода в форму на сайте попадает вот это:

http://savepic.org/5047096.jpg

Вот данные о базе:

http://savepic.org/5053240.jpg

А вот таблицы в базе, кодировка таблиц рознится (не я все это создавал, было до меня smile ):

http://savepic.org/5107515.jpg


Товарищи, как избавиться от этих корозябок? Испробовал несколько методов, не помогло. Решил обратиться к вам с советом.
Эти данные потом нужно будет экспортировать, чтобы админ смотрел, что туда внесли. Экспортируются они точно в таком же виде...

2

Re: Кодировка в таблице базы, прошу совета.

Посмотрите в какой кодировке страницы сайта. Если страницы в UTF-8, то и кодировка таблиц в БД должна быть utf8_general_ci.

3

Re: Кодировка в таблице базы, прошу совета.

Hanut сказал:

Посмотрите в какой кодировке страницы сайта.

Именно те страницы, которые работают с этой таблицей? Т.е. страница html формы и страница /action.php?

Если страницы в UTF-8, то и кодировка таблиц в БД должна быть utf8_general_ci.

Всех таблиц или только той, что работает с формой?

4 (изменено: winkel, 2014-02-26 16:58:05)

Re: Кодировка в таблице базы, прошу совета.

Вот коды страниц, отвечающих за форму.

Html:

<meta content="text/html; charset=windows-1251" http-equiv="”Content-Type”" />
<p align="center"><b>Форма запроса</b></p>
<form method="post" action="/test1.php">
    <table width="100%" align="center">
        <tbody>
            <tr>
                <td valign="top" width="40%" align="right">Платежный код (15 цифр)*:</td>
                <td valign="top" width="60%"><input required="required" type="text" size="15" name="platcode" class="required" /></td>
            </tr>
            <tr>
                <td valign="top" width="40%" align="right">ФИО*:</td>
                <td valign="top" width="60%"><input required="required" type="text" size="80" name="name" class="required" /></td>
            </tr>
            <tr>
                <td valign="top" width="40%" align="right">Площадь квартиры*:</td>
                <td valign="top" width="60%"><input required="required" type="text" size="5" name="place" class="required" /></td>
            </tr>
            <tr>
                <td valign="top" width="40%" align="right">Контактный e-mail:</td>
                <td valign="top" width="60%"><input type="text" size="50" name="mail" /></td>
            </tr>
            <tr>
                <td valign="top" width="40%" align="right">Контактный телефон:</td>
                <td valign="top" width="60%"><input type="text" size="50" name="telnum" /></td>
            </tr>
            <tr>
                <td valign="top" width="40%" align="right">Введите число с картинки:</td>
                <td valign="top" width="60%"><input name="captcha" /><img style="vertical-align: middle;" src="captcha.php?salt=123456" /></td>
            </tr>
            <tr>
                <td colspan="2" align="center"><input value="Продолжить" type="submit" /></td>
            </tr>
        </tbody>
    </table>
</form> <center><br /></center><center>* Обозначены поля, обязательные для заполнения </center>
<blockquote>
    <p> </p>
    <p> </p>
</blockquote>
<blockquote>
    <p> </p>
</blockquote>
<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong></p>
<p><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</strong><strong>&nbsp;</strong></p>

Php:

<?

/* Соединяемся с базой данных */
$hostname = ""; // название/путь сервера, с MySQL
$username = ""; // имя пользователя (в Denwer`е по умолчанию "root")
$password = ""; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
$dbName = ""; // название базы данных


/* Таблица MySQL, в которой будут храниться данные */
$table = "test_table";


/* Создаем соединение */
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");

mysql_query('SET NAMES cp1251');

/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());



/* Определяем текущую дату */
$cdate = date("Y-m-d");

/* Составляем запрос для вставки информации в таблицу
name...date - название конкретных полей в базе;
в $_POST["test_name"]... $_POST["test_mess"] - в этих переменных содержатся данные, полученные из формы */
$query = "INSERT INTO $table SET platcode='".$_POST['platcode']."', name='".$_POST["name"]."',
place='".$_POST["place"]."', mail='".$_POST["mail"]."', telnum='".$_POST["telnum"]."', data='$cdate'";

/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
mysql_query($query) or die(mysql_error());

/* Закрываем соединение */
mysql_close();

/* В случае успешного сохранения выводим сообщение и ссылку возврата */
echo ("<div style=\"text-align: center; margin-top: 10px;\">
<font color=\"green\">Данные успешно отправлены!</font>

<a href="index.php">Вернуться назад</a></div>");

?>

5

Re: Кодировка в таблице базы, прошу совета.

winkel сказал:

Именно те страницы, которые работают с этой таблицей? Т.е. страница html формы и страница /action.php?

Та страница, которая отправляет данные в БД.

Кодировка это не только метатег
<meta content="text/html; charset=windows-1251" http-equiv="”Content-Type”" />
Но и кодировка самой страницы. Увидеть ее можно в Notepad++ в строке статуса; там будет либо UTF8, либо ANSI (это означает windows-1251).

6

Re: Кодировка в таблице базы, прошу совета.

winkel сказал:

Всех таблиц или только той, что работает с формой?

Только той, что работает с формой.

7

Re: Кодировка в таблице базы, прошу совета.

Кодировка на обоих страницах ANSI

8

Re: Кодировка в таблице базы, прошу совета.

вбивал в .htaccess строчку, прописывал в php файле вот так:

mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
mysql_set_charset('cp1251');

еще какие-то танцы с бубнами, уж не помню..ничего не помогает neutral

9

Re: Кодировка в таблице базы, прошу совета.

winkel сказал:

mysql_set_charset('cp1251');

В этом нет необходимости. Меняйте кодировку скрипта и его страниц на utf-8. И в базе данных тоже меняйте кодировку таблиц. Избегайте на одном сайте использовать разные кодировки.