Задавайте вопросы, мы ответим
Вы не зашли.
Локально все работает. Кодировка базы и таблицы utf-8. При импорте на хостинг символ "ш" не хочет правильно отображаться/распознаваться. В чем дело? Помогите.
Неактивен
А файл с данными в какой кодировке? И правильно ли написана эта буква в этом файле?
Неактивен
Да, файл тоже в utf-8. Дома локально все правильно. Никаких вопросов. MySQL5 на хостинге, как и у меня. Операционка W2003. Почему такая фигня не пойму? Еще заметил, что вместо символа "И" отображается "п". Может еще чего вылезет, но пока таблица небольшая, тестовая.
Неактивен
Попробуйте сделать
CREATE TABLE test (z VARCHAR(100)) CHARSET utf8;
INSERT INTO test VALUES ('абв....эюя');
И посмотреть, как это импортируется в базу.
Неактивен
Создаем базу (РНР) и вставляем символы
$mysqli=@mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);
if(mysqli_connect_errno()){echo 'Can\'t connect to DB';exit;}
$query='CREATE TABLE test (x TEXT) CHARSET utf8';
$res=@mysqli_query($mysqli,$query);
if($res){
$query='INSERT INTO test VALUES ("АаБбВвГгДдЕеЁёЖжЗзИиЙйКкЛлМмНнОоПпРрСсТтУуФфХхЦцЧчШшЩщЪъЫыЬьЭэЮюЯя")';
$res=@mysqli_query($mysqli,$query);
if($res){echo 'OK';}else{echo mysqli_error($mysqli).'<br><br>';}
}else{echo mysqli_error($mysqli);}
Тестовая страничка (РНР):
header('Content-Type: text/html; utf-8');
echo '<html><head><title>TEST PAGE</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body>';
$mysqli=@mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);
if(mysqli_connect_errno()){echo 'Can\'t connect to DB</body>';exit;}
$query='SELECT * FROM test';
$res=@mysqli_query($mysqli,$query);
if($res){
while($row=mysqli_fetch_assoc($res)){echo $row['x'].'<br>';}
}else{echo mysqli_error($mysqli).'<br><br>';}
echo '</body>';
Результат можно увидеть по ссылке latebra.ru/tst.php
Та же фигня. А дома нормально.
Неактивен
Добавьте после подключения
mysqli_query("SET NAMES UTF8");
в оба скрипта. Останется ли эффект?
Неактивен
Добавил
mysqli_query($mysqli,"SET NAMES UTF8");
Все пошло. Можно немного пояснить процесс? У меня локально настройки какие есть, которых нет на хостинге? Или как?
Отредактированно safo (03.07.2008 10:32:06)
Неактивен
Пояснение см. в статье http://sqlinfo.ru/articles/info/2.html
Локально Ваш клиент подключается по умолчанию в кодировке UTF8. Сложно сказать почему это происходит, может это новый PHP какой-то. Обычно PHP подключается в той кодировке, с которой скомпилирован.
Неактивен
Благодарю. Почитаю.
Неактивен