[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Хочу чтоб UTF-8, а получается cp-1251
timonbandit
Снова здравствуйте!

у меня дикая и непонятная проблема:
есть две странички
index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title>
Добавление Авто в базу</title>
</head>
<body>
<form
action="addavto.php" enctype="multipart/form-data" method="post">
<TABLE
WIDTH="50%" BORDER=1 CELLSPACING=4 CELLPADDING=4>
<TR>
<TD
ALIGN="left">Производитель</TD>
<TD
ALIGN="left"> <select name="manuf"><option value="Audi">Audi</option><option value="BMW">BMW</option><option value="Chevrolett">Chevrolett</option><option value="Dodge">Dodge</option><option value="Ford">Ford</option><option value="Mercedes">Mercedes</option><option value="Nissan">Nissan</option><option value="ВАЗ">ВАЗ</option><option value="ГАЗ">ГАЗ</option></select></TD>
</TR>
<TR>
<TD
ALIGN="left">Модель</TD>
<TD
ALIGN="left"><input type="text" name="model" value="Модель" /></TD></TR>
<TR>
<TD
ALIGN="left">Год выпуска</TD>
<TD
ALIGN="left"><?php echo "<select title='Год' name ='year'>";
for($i = 1950; $i <= 2012; $i++)
{
echo "<option value=$i>".sprintf("%04d", $i);
}
echo "</select>"?></TD>
</TR>
<TR>
<TD
ALIGN="left">Цвет</TD>
<TD
ALIGN="left"><select name="color"><option value="Белый">Белый</option><option value="Черный">Черный</option><option value="Красный">Красный</option><option value="Желтый">Желтый</option><option value="Синий">Синий</option><option value="Серебристый">Серебристый</option><option value="Зеленый">Зеленый</option></select></TD>
</TR>
<TR>
<TD
ALIGN="left">Кузов</TD>
<TD
ALIGN="left"><select name="type"><option value="Седан">Седан</option><option value="Хэчбэк">Хэчбэк</option><option value="Универсал">Универсал</option><option value="Джип">Джип</option></select></TD>
</TR>
<TR>
<TD
ALIGN="left">Пробег</TD>
<TD
ALIGN="left"><input type="text" name="km" value="тысяч км." /></TD>
</TR>
<TR>
<TD
ALIGN="left">Цена</TD>
<TD
ALIGN="left"><input type="text" name="price" value="тысяч рублей" /></TD>
</TR>
<TR>
<TD
ALIGN="left">Изображение</TD>
<TD
ALIGN="left"><input type="file" name="kartinka"/></TD>
</TR>
</TABLE>
<input
type="submit" value="Записать в базу" />
</form>


</body>
</html>



и addavto.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<
title>Добавление Авто в базу</title>
</
head>
<
body>

<?php
Error_Reporting(E_ALL & ~E_NOTICE);
require_once '../config.php';
$config = new config();
$host = $config->dbhost;
$user = $config->dbuser;
$pass = $config->dbpass;

$baza=mysql_connect($host, $user, $pass) OR DIE ("holy fuckin shit");
$conn=mysql_select_db($config->dbname) OR DIE (mysql_error());
mysql_query ("SET NAMES 'utf-8'");
if (!$baza&&$conn){
echo 'Косяк';
exit();
}
else
{ echo 'есть коннект';}


$upload_dir = '../images/';
$upload_file = $upload_dir . basename($_FILES['kartinka']['name']);
$manuf = $_POST['manuf'];
$model = $_POST['model'];
$year = $_POST['year'];
$color = $_POST['color'];
$type = $_POST['type'];
$km = $_POST['km'];
$price = $_POST['price'];

if (empty($_FILES['kartinka']['tmp_name'])){echo 'var is empty';}else{echo 'var is full';}



echo "$manuf \n</br>";
echo "$model \n</br>";
echo "$year \n</br>";
echo "$color \n</br>";
echo "$type \n</br>";
echo "$km \n</br>";
echo "$price \n</br>";
echo "$upload_dir \n </br>";
echo "имя файла: $upload_file </br>";
if (move_uploaded_file($_FILES['kartinka']['tmp_name'], $upload_file))
{
echo "файл загружен в папку $upload_dir";

}
else {
echo 'какой-то косяк';
}

echo "<img src='$upload_file' width='382' height='332' align='left' />";

$query = "INSERT INTO list VALUES (0, '$manuf',
'
$model',
'
$year',
'
$color',
'
$type',
'
$km',
'
$price',
'
$upload_file' );";
mysql_query($query);

if (!$query)
{echo "ошибка записи в базу данных";}
else {echo '<strong>Данные записаны</strong>';}

echo "<a href='index.php'>Назад</a>"

?>



</body>
</
html>


было изначально в cp1251

затем сконвертировал с помощью notepad++ в utf-8(без bom)
но как не старайся, в базу пишет на cp1251.
правда страницы и открывались кракозябрами до записи в .htcaccess
строчки AddDefaultCharset utf-8.

пробовал дописывать в начало скриптов header() с кодировкой не помогло!!
Сама база utf8_general_ci, таблица тоже.

где скрипт ловит cp1251 я не понимаю!!

Ткните носом или подскажите куда копать







Спустя 13 минут, 26 секунд (6.02.2012 - 13:16) GET написал(а):
Проверьте:


1.
Кодовая таблица для базы данных MySQL определяется в файле my.cnf, его можно открыть для редактирования из любого текстового редактора. Только надо сначала открыть редактор, а потом в редакторе открыть этот файл(или F4 через Тотal Commander). Если установка Денвера происходила по умолчанию или по рекомендациям, то этот файл будет расположен в c:\WebServers\usr\local\mysql5\my.cnf

Делаем замены, устанавливающие кодовую таблицу utf8 вместо cp1251

[client]
port = 3306
socket = /tmp/mysql.sock
# ==============================================================
# === БЫЛО === default-character-set = cp1251
# ==============================================================
default-character-set = utf8
character-sets-dir = /usr/local/mysql4/share/charsets

#
# Параметры MySQL-сервера.
#
[mysqld]
# Использовать режим совместимости с клиентами MySQL 3.x и MySQL 4.0.
old-passwords

# Кодировка баз данных по умолчанию.
default-character-set = utf8 # было cp1251
init-connect = "set names utf8" # было cp1251
2.
В
c:\WebServers\usr\local\apache\conf\httpd.conf
комментим строку
# AddDefaultCharset windows-1251
и пишем ниже ее:
AddDefaultCharset UTF-8

3.
Если в корне:c:\WebServers\home\localhost\www\
лежит .htaccess, то и там нужно поставить:
AddDefaultCharset utf-8, а это закоментить:
# AddDefaultCharset windows-1251


4.
Если для импорта/экспорта используется phpMyAdmin, то нужно и там сделать некоторые изменения. Справа на главной странице http://localhost/Tools/phpmyadmin/index.php выбираем
Language -> Russian (ru-utf-8),
Сопоставление соединения с MySQL -> utf8_general_ci
должно быть: MySQL-кодировка: UTF-8 Unicode (utf8)

Спустя 45 минут (6.02.2012 - 14:01) timonbandit написал(а):
Спасибо! Очень помогло! Только вот вопрос! у меня на денвере стоит joomla она работает только с utf8, но она не испытывает никаких трудностей с записью и чтением с этой же базы! с этими-же настройками! как так? какое-то преобразование внутри joomla или как-то по другому работают с mysql?

Спустя 5 минут, 23 секунды (6.02.2012 - 14:06) GET написал(а):
timonbandit

Я думаю там продуманный конфиг файл, который обучает как чему работать и с какой кодировкой.

тот пример что я выше привел все проекты вашего Денвера переводит на UTF-8

Спустя 1 час, 54 минуты, 56 секунд (6.02.2012 - 16:01) timonbandit написал(а):
Я понял, что все) по денверовскому localhost заметно) но, наверное, лучше апачевские директивы в htcaccess складывать, чем весь конфиг изменять.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.