Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Небольшая проблема с MySQL и UTF-8 - пропадает буква "ш" (Fog)
Author Message
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Sat Apr 16, 2005 1:05 pm (написано за 53 секунды)
   Post subject: Небольшая проблема с MySQL и UTF-8 - пропадает буква "ш"
Reply with quote

Такая проблема:

Создаю таблицу в MySQL,
Выполняю запрос insert into values('...текст с встречающейся буквой ш..')

Затем делаю select, достаю эту запсь. Строка выводится правильно, за исключением буквы "ш", вместо которой выводится крокозяблик.

При создании таблиц использовалась таблица utf8_general_ci

Используется пакет Base_PHP5_2005-01-12_a1.3.31_p5.0.2_m4.1.8_pma2.6.1

Подскажите, в чём может быть дело?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sun Apr 17, 2005 9:12 am (спустя 20 часов 7 минут; написано за 28 секунд)
   Post subject:
Reply with quote

Минимальный пример тестового скрипта приведите, чтобы можно было его у себя запустить и сразу же убедиться в наличии проблемы.
Back to top
View user's profile Send private message Send e-mail
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Sun Apr 17, 2005 4:03 pm (спустя 6 часов 50 минут; написано за 1 минуту 6 секунд)
   Post subject:
Reply with quote

файл в кодировке UTF-8, создавался текстовым редактором EditPlus2
Результат видно на скриншоте, в слове "Шоушенк" буква "ш" не отображается
Code (php): скопировать код в буфер обмена
/*
CREATE DATABASE `u8` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE u8;

CREATE TABLE `utf8_test` (
  `text` varchar(50) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

*/


header (www.php.net/header)("Content-Type: text/html; charset=UTF-8");

MySQL_Connect (www.php.net/mysql_connect)('localhost', 'root', '');
MySQL_Select_DB (www.php.net/mysql_select_db)('u8');

MySQL_Query (www.php.net/mysql_query)('insert into utf8_test values("Побег из Шоушенка")');


$res = MySQL_Query (www.php.net/mysql_query)('select text from utf8_test order by text ASC');

while(list($text)=MySQL_Fetch_Row (www.php.net/mysql_fetch_row)($res))
{
        echo (www.php.net/echo) $text.'<br />';
}

MySQL_Close (www.php.net/mysql_close)();



u8.gif
 Description:
 Filesize:  10.59 KB
 Viewed:  10980 Time(s)

u8.gif


Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sun Apr 17, 2005 4:51 pm (спустя 47 минут; написано за 10 секунд)
   Post subject:
Reply with quote

Fog
А под нормальным браузером такая же проблема?
Back to top
View user's profile Send private message Send e-mail
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Sun Apr 17, 2005 5:33 pm (спустя 41 минуту; написано за 9 минут 6 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов
угу. Может, это проблема UTF в PHP ? или кривизны рук (ибо я в UTF не бум-бум)
Вот серия экспериментов: делаю табличку согласно инструкций, с collation utf8_general_ci.
Наблюдаю фигню и браузере, и в PMA (строки ,вставленные через PMA, вообще целиком значочками кажутся).
Выставляю табличке collation в "cp1251_general_ci" .
Теперь то ,что вставлено через скрипт, скриптом же корректно выводится, а PMA-шные строчки - значочками и остались..

Хе, еще одно наблюдение: у меня в MyIE "View Source" открывает и в Блокнот, и в EditPlus.
В блокноте PMA-шные строки в норме:
Блокнот wrote:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<title> New Document </title></head>
<body>UTF-8 Шкодливые шушлики ушуршали в подпроштранштво <br />
UTF-8 Шкодливые С?СѓС?лики СѓС?СѓСЂС?али РІ РїРѕРґРїСЂРѕС?транС?тво <br />
UTF-8 Шкодливые С?СѓС?лики СѓС?СѓСЂС?али РІ РїРѕРґРїСЂРѕС?транС?тво <br />
</body></html>
EditPlus wrote:
<HTML><HEAD><TITLE>New Document</TITLE></HEAD>
<BODY>UTF-8 ??????????????????<BR>UTF-8 Шкодливые шушлики ушуршали в подпроштранштво <BR>UTF-8 Шкодливые шушлики ушуршали в подпроштранштво <BR></BODY></HTML>
Если кому-то сие поможет - флаг в руки...

// зачем EditPlus строку с "<!DOCTYPE" прибил - без понятия
Back to top
View user's profile Send private message
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Sun Apr 17, 2005 6:01 pm (спустя 28 минут; написано за 1 минуту 57 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов
Да

Maus
Quote:
Может, это проблема UTF в PHP
Скорее MySQL

А с phpMyAdmin там вообще путаница, чтобы дампнуть базу в UTF-8, при дампе нужно выбрать "сохранять файл как 1251", тогда он сохранит мою базу в UTF-8. А если при дампе выбрать "сохранять файл как UTF-8" - каша какая-то будет в файле.
Back to top
View user's profile Send private message
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Sun Apr 17, 2005 6:11 pm (спустя 9 минут; написано за 51 секунду)
   Post subject:
Reply with quote

Maus в том то и дело, что мне нужно, чтобы в базе данные хранились в юникоде и сортировались/сравнивались соответственно как юникодные строки.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Apr 20, 2005 10:51 am (спустя 2 дня 16 часов 39 минут; написано за 29 секунд)
   Post subject:
Reply with quote

Вот код, который у меня работает.
Code (php): скопировать код в буфер обмена
<?php
/*
CREATE DATABASE `u8` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE u8;

CREATE TABLE `utf8_test` (
  `text` varchar(50) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
*/


header (www.php.net/header)("Content-Type: text/html; charset=UTF-8");

MySQL_Connect (www.php.net/mysql_connect)('localhost', 'root', '');
MySQL_Select_DB (www.php.net/mysql_select_db)('u8');

MySQL_Query (www.php.net/mysql_query)('delete from utf8_test');                                                 

#
#
#
MySQL_Query (www.php.net/mysql_query)("SET NAMES cp1251") or die (www.php.net/die)(mysql_error (www.php.net/mysql_error)());
MySQL_Query (www.php.net/mysql_query)('insert into utf8_test values("  ")') or die (www.php.net/die)(mysql_error (www.php.net/mysql_error)());

#
#
#
MySQL_Query (www.php.net/mysql_query)("SET NAMES utf8") or die (www.php.net/die)(mysql_error (www.php.net/mysql_error)());
$res = MySQL_Query (www.php.net/mysql_query)('select text from utf8_test order by text ASC') or die (www.php.net/die)(mysql_error (www.php.net/mysql_error)());

while (list($text)=MySQL_Fetch_Row (www.php.net/mysql_fetch_row)($res)) echo (www.php.net/echo) $text.'<br />';

MySQL_Close (www.php.net/mysql_close)();
?>
Попробуйте внимательно разобраться с dev.mysql.com/doc/mysql/en/charset.html.
Back to top
View user's profile Send private message Send e-mail
Fog
Участник форума



Joined: 23 Mar 2003
Posts: 31
Карма: 0
   поощрить/наказать


PostPosted: Tue May 03, 2005 4:35 pm (спустя 13 дней 5 часов 43 минуты; написано за 35 секунд)
   Post subject:
Reply with quote

Спасибо! Доберусь до дома - попробую.=)
Back to top
View user's profile Send private message
Lunakino
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sun Aug 06, 2006 12:43 am (спустя 1 год 3 месяца 2 дня 8 часов 8 минут; написано за 1 минуту 24 секунды)
   Post subject:
Reply with quote

Господа, низкий поклон и спасибо за решение проблемы. Столько времени на это потрптил, а про SET NAMES utf8 только здесь нашел, ну и, конечно, в мануалах... потом...
Back to top
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML