Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: UTF8 и буква "ш"
 
 автор: Zilog   (12.05.2009 в 17:13)   письмо автору
 
 

Дано: скрипт, сайт - в юникоде. Пишем в БД "ширли-мырли", при выводе получаем "?ирли-мырли".

Почему БД не принимает букву "ш"?


Доп. сведения:
Проблем нет, если ишем из поля Input, а если это textarea - то глючит, собака.

  Ответить  
 
 автор: Qiao   (12.05.2009 в 18:56)   письмо автору
 
   для: Zilog   (12.05.2009 в 17:13)
 

Проверьте чтобы кодировка поля куда записывает textarea была такой же как и та куда записывает Input

  Ответить  
 
 автор: Zilog   (12.05.2009 в 22:56)   письмо автору
 
   для: Qiao   (12.05.2009 в 18:56)
 

>Проверьте чтобы кодировка поля куда записывает textarea была такой же как и та куда записывает Input

Да. Разницу увидел: в случае input стоит utf8_unicode_ci, для textarea стоит cp1251_general_ci. Для таблицы в целом, в обоих случаях стоит utf8_unicode_ci.

Поменял, как рекомендовали - заработало. Спасибо.
Однако ж, для меня осталось неясно, что происходит - стоит же Юникод, чего ему нехватало? А если я планирую поле использовать для нескольких языков - что тогда???

  Ответить  
 
 автор: 2to32thpower   (13.05.2009 в 00:57)
 
   для: Zilog   (12.05.2009 в 22:56)
 

Таки и используйте unicode, ведь он для всех языков. ну может быть кроме эльфийского

  Ответить  
 
 автор: Zilog   (13.05.2009 в 12:54)   письмо автору
 
   для: 2to32thpower   (13.05.2009 в 00:57)
 

>Таки и используйте unicode, ведь он для всех языков. ну может быть кроме эльфийского

Так и использую! Но тогда возникает прблема с буквой "ш"....

  Ответить  
 
 автор: Qiao   (13.05.2009 в 14:09)   письмо автору
 
   для: Zilog   (13.05.2009 в 12:54)
 

Никаких проблем не будет если в MySQL выбрана правильная кодировка.
Когда создаёте базу ставьте кодироввку полей по умолчанию utf. Или вручную не забывайте переделать когда таблицу новую создаёте.

Скоро все сайты будут только в юникоде.

  Ответить  
 
 автор: Zilog   (13.05.2009 в 21:32)   письмо автору
 
   для: Qiao   (13.05.2009 в 14:09)
 

>Никаких проблем не будет если в MySQL выбрана правильная кодировка.

Всё в юникоде. Скрипт в юникоде. Сайт в браузере отображается в юникоде. И есть проблема буквы "ш". Но если формат поля, где храниться текст - сделать таким, как описано выше - проблема снимается, и всё работает "на ура".

Вопрос - почему так? А то, что юникод всему голова, и так понятно.

  Ответить  
 
 автор: @@@   (13.05.2009 в 21:49)
 
   для: Zilog   (13.05.2009 в 21:32)
 

у вас cp1251_general_ci и вы не понимаете почему крошаться некоторые символы utf8? потому что cp1251 != utf8, отсюда можно что угодно ожидать

  Ответить  
 
 автор: Zilog   (14.05.2009 в 12:23)   письмо автору
 
   для: @@@   (13.05.2009 в 21:49)
 

>у вас cp1251_general_ci и вы не понимаете почему крошаться некоторые символы utf8? потому что cp1251 != utf8, отсюда можно что угодно ожидать


Да. Не понимаю. Потому как если стоит Юникод - проблема есть, cp1251_general_ci - проблемы нет. Несмотря на то, что сайт, скрипт, ввод данных - всё в Юникоде происходит. А вы понимаете отчего так? Если да, будьте добры, обьясните.

  Ответить  
 
 автор: Zilog   (14.05.2009 в 15:29)   письмо автору
 
   для: Zilog   (14.05.2009 в 12:23)
 

Господа, может всётаки кто-то в курсе, в чем проблема?

  Ответить  
 
 автор: Qiao   (14.05.2009 в 16:51)   письмо автору
 
   для: Zilog   (14.05.2009 в 15:29)
 

У вас mysql_query("SET NAMES 'utf8'") есть?

И как именно называется кодировка, с которой проблема?

  Ответить  
 
 автор: Zilog   (15.05.2009 в 14:11)   письмо автору
 
   для: Qiao   (14.05.2009 в 16:51)
 

>У вас mysql_query("SET NAMES 'utf8'") есть?
>
>И как именно называется кодировка, с которой проблема?

Вот, вот именно то, чего так нехватало. Спасибо, любезнейший.

  Ответить  
 
 автор: Ermilov   (14.05.2009 в 18:14)   письмо автору
 
   для: Zilog   (14.05.2009 в 15:29)
 

в файле подключения к бд прописываете

$conn= @mysql_connect ($server, $login, $password);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET collation_connection = 'UTF-8_general_ci'");
mysql_query("SET collation_server = 'UTF-8_general_ci'");
mysql_query("SET character_set_client = 'UTF-8'");
mysql_query("SET character_set_connection = 'UTF-8'");
mysql_query("SET character_set_results = 'UTF-8'");
mysql_query("SET character_set_server = 'UTF-8'");
$db_use = @mysql_select_db ($bdname']);

и в БД проверяете, чтобы кодировка таблицы и текстовых полей была UTF-8_general_ci

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования