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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: в MySQL utf-8 - выводятся ???

Сообщения:  [1-6] 

 
 автор: LouD   (02.12.2007 в 20:48)   письмо автору
 
   для: LouD   (01.12.2007 в 21:17)
 

Всем спасибо, вопрос решен.

Если кратко - помогло шаманство с бубном в 4 местах:
кодировка самой БД, кодировка для сравнения в БД, кодировка отдаваемой страницы, настройка на utf8 при коннекте (SET NAMES='utf8').

   
 
 автор: LouD   (02.12.2007 в 16:43)   письмо автору
 
   для: LouD   (02.12.2007 в 16:21)
 

да, и еще попытка: вставить текст с умляутами php-скриптом:
mysql_query("INSERT INTO de_content (id,page) VALUES(111,'Unser Verein wurde in Zusammenhang mit der Verstärkung der Gewalt in der Welt gegründet. Wir leben im XXI Jahrhundert und haben kein Recht, über von entwickelten Menschlichkeit erreichten demokratischen und menschlichen Errungenschaften zu vergessen. Aber letzte Tendenzen in der Welt zwingen besonders zu beachten, dass gegenwärtige Zivilisation langsam zur Stufe mittelalterer Inquisition abrutscht.')");
жирным выделены символы с умляутами.

После вставки в базе содержится такая информация:
Unser Verein wurde in Zusammenhang mit der Verstarkung der Gewalt in der Welt gegrundet. Wir leben im XXI Jahrhundert und haben kein Recht, uber von entwickelten Menschlichkeit erreichten demokratischen und menschlichen Errungenschaften zu vergessen. Aber letzte Tendenzen in der Welt zwingen besonders zu beachten, dass gegenwartige Zivilisation langsam zur Stufe mittelalterer Inquisition abrutscht.

То есть произошла замена символов с умляутами на стандартные символы латиницы

   
 
 автор: LouD   (02.12.2007 в 16:21)   письмо автору
 
   для: Trianon   (02.12.2007 в 14:15)
 

Но если оставить в стороне локальную машину... Я не снимал с нее дамп, я копировал структуру таблицц, а данные заносил (пока на стадии отладки простым режимом вставки в phpMyAdmin на хостинге).

Скрипт коннекта к БД выглядит так:

    $db = mysql_connect($host, $name, $pass)
        or die("Ошибка подключения к серверу MySQL");

    mysql_select_db($dbname,$db)
        or die("Не могу установить соединение с базой данных!");
    
    mysql_query("SET NAMES='utf8'");

Я уже пробовал переконвертировать таблицу непосредственно в phpMyAdmin на хостинге:

ALTER TABLE `de_content` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;


После вставки через phpMyAdmin фрагмента текста в базе в числовые коды символы не переконвертируются.
При выводе контента скриптом - выводятся вопросами по-прежнему.

   
 
 автор: Trianon   (02.12.2007 в 14:15)   письмо автору
 
   для: LouD   (02.12.2007 в 12:17)
 

Для начала следует на локальной машине добиться хранения данных в кодировке UTF-8, а не как попало.
Потом снять работоспособный (читающийся в UTF-8-редакторе) дамп.
Потом проапгрейдить сервер до уровня хотя бы 4.1
Потом изменить локальный скрипт соедиения с БД, добавив в него настройку на нужную кодировку.
SET NAMES='utf8'
Потом создать БД, указав умалчиваемую кодировку utf8 и сопоставление utf8_unicode_ci
Потом залить дамп на обновленный сервер, предварительно прописав в начале дампа SET NAMES='utf8'
Все это потому, что сервера 4.0 и ниже работу с разными кодировками не поддерживают.
А сервера 4.1 и выше только с ними и работают.

   
 
 автор: LouD   (02.12.2007 в 12:17)   письмо автору
 
   для: LouD   (01.12.2007 в 21:17)
 

Поясню может немного ситуацию:
У меня на локальном сервере стоит MySQL 3.23.53 - при записи немецкого текста идет замена символов на числовые коды. Соответственно при выводе на сайте все отображается как хотелось..

На хостинге стоит версия 4.1.20, MySQL-кодировка: UTF-8 Unicode (utf8)
Тут немецкий текст в базу записывается нормальным текстом (со всеми умляутами), но на сайт эти символы выводятся знаком "?"

Кодировку на хостинге (Сопоставление соединения с MySQL) менять пробовал: пишет или нормальный текст, или с ??
Куда копать? Как я понимаю, или в скрипте надо менять обработку этих символов, или при записи в базу чтобы они перекодировались "на лету", как у меня на тестовом..

Да, в самом первом "стартовом" скрипте с настройками я вставил строку
setlocale (LC_ALL, 'nl_NL');
но она ничем не помогла.

   
 
 автор: LouD   (01.12.2007 в 21:17)   письмо автору
 
 

Ситуация:
База MySQL, в параметрах таблицы кодировка utf8_unicode_ci
Тэг мета тоже настроен на отдачу utf-8 (<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />)

Но на сайте вместо спецсимволов немецкого языка - знаки ?
То есть &#220;ber uns превращается в ?ber uns

В каком месте копать?

Есть, правда, еще в <head> один тэг: <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
но по-моему он тут не при чем.
Сайт на 2 языках, английский и немецкий.

   

Сообщения:  [1-6] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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