Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Проблема с хранением юникода в MySQL (http://www.flasher.ru/forum/showthread.php?t=115248)

deeplay 24.08.2008 11:17

Проблема с хранением юникода в MySQL
 
Доброе время суток.

Для тех кому лень читать нижеописанное, сразу задам вопрос:
Где в phpMyAdmin что надо поменять, что бы в базу заносилось səhifə, а не s&#.601;hif&#.601;?

Для тех, у кого есть время:

Была создана база с таблицами с кодировкой по умолчанию (cp1251_general_ci).

В базу занесен (например) текст səhifə. Он попал в базу как s&#.601;hif&#.601;
php-файл читает с базы, флеш у него берет переменную, хранящая вышеуказанный текст. Флеш конечно после буквы s в тексте все оборвет, это многие тут знают. php-файл сохранен в кодировке UTF8 и если вручную там вписать этот текст, то флеш с радостью все читает! это тоже знаем :)

В базе (через phpMyAdmin) все поля Сравнение сделал utf8_unicode_ci и вообще, кликнув на Операции (для всей БД) сравнение сделал так же utf8_unicode_ci. (далее, когда увидел что не помогает, делал у всего utf8_general_ci)

Создал новую таблицу, она уже в utf8_unicode_ci, и вписал туда səhifə, в базу опять занесено s&#.601;hif&#.601; :(

Где в phpMyAdmin что надо поменять, что бы в базу заносилось səhifə ?

p.s.: искал по форуму, советовали iconv. определял кодировку (почему-то ISO-8859-1). менял (iconv_set_encoding) на UTF8, после чего iconv_get_encoding показывал UTF8! и даже делал iconv("ISO-8859-1", "UTF-8", "s&#.601;hif&#.601;"); — все без толку (((((

etc 24.08.2008 11:47

Что-то мне подсказывает, что html-сущности создает либо скрипт, либо браузер. База тут непричем.

deeplay 24.08.2008 13:52

__etc, то есть скрипт phpMyAdmin'а, который заносит в базу? Не совсем понял что вы имели ввиду.

etc 24.08.2008 13:57

Цитата:

Сообщение от deeplay (Сообщение 759984)
__etc, то есть скрипт phpMyAdmin'а, который заносит в базу? Не совсем понял что вы имели ввиду.

Я имел ввиду html-сущности, которые создает либо сам скрипт, либо браузер (хотя врядли браузер таким занимается).

deeplay 24.08.2008 14:06

получается я в безвыходном положении? ужасно, неужели придется использовать php-файлы вместо базы? это же будет смешно, но мне от этого только грустно(((

правда у меня щас возникла идея по написании функции (пхп), которая будет заменять s&#.601; на ə. думаю должно помочь... хоть и скрипт будет медленно работать, так как там не только эта буква, там куча разных + ещё и регистр

deeplay 24.08.2008 19:16

решил проблему пхп-шным ковертом. но тема хранения символов в БД осталась не раскрытой.

Mnilionic 27.08.2008 17:45

для базы нужна кодировка подключения. То есть в какой кодировке ждать данных от юзера и в какой кодировке возвращать данные ему.

К сожалению дефолтные такие настройки доступны только в config и распространяются на весь сервер mySQL.

По этому можно выставить кодировку базы/таблицы в utf8_unicode_ci, как вы делали и! указать что обмен данными будет так же в утф
sql:
Код:

SET character_set_results = 'utf8', character_set_client = 'utf8'
за правильность не уверен, но вроде это меня имено так спасло однажды.


Часовой пояс GMT +4, время: 16:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.