Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вместо символа Unicod - набор 
:(
    Опции темы
Nickname
Дата 23.5.2008, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Почему, когда вставляешь новую запись, в которой содержаться символы unicode (например Ó) в таблицу (таблица типа utf8), то в таблицу попадает не сам символ а заменяющая его последовательность ( & # 211 ; )?

Это сообщение отредактировал(а) Nickname - 23.5.2008, 16:27
PM MAIL   Вверх
skyboy
Дата 23.5.2008, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



потому что htmlspecialchars надо делать при выводе из базы, а не при занесении в базу.

Добавлено через 1 минуту и 33 секунды
уточняю: ты используешь mysql browser, вставляешь данные, а у тебя вставляются html-сущности с соответствующими кодами или все же у тебя есть код(предположительно на РНР), который пишет принятые данные в базу?
PM MAIL   Вверх
Nickname
Дата 23.5.2008, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Цитата(skyboy @  23.5.2008,  17:13 Найти цитируемый пост)
потому что htmlspecialchars надо делать при выводе из базы, а не при занесении в базу.

да нет никакого htmlspecialchars
вот код который вставляет новую запись
Код

<?
...
mysql_connect($hostname, $user, $password);
mysql_select_db ($db);
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");
mysql_query ("SET NAMES 'utf8'");
...
if(isset($_POST['send1'])){
    $pole1=$_POST['pole1'];
    $q="INSERT INTO test SET `test`='$pole1'";
    mysql_query($q) or die (mysql_error());
}
if(isset($_GET['send2'])){
    $pole2=$_GET['pole2'];
    $q="INSERT INTO test SET `test`='$pole2'";
    mysql_query($q) or die (mysql_error());
}

?>
<form method=post>
<input type='text' name='pole1'>
<input type=submit name=send1>
</form>
<br>
<form method=get>
<input type='text' name='pole2'>
<input type=submit name=send2>
</form>

Цитата

уточняю: ты используешь mysql browser, вставляешь данные, а у тебя вставляются html-сущности с соответствующими кодами или все же у тебя есть код(предположительно на РНР), который пишет принятые данные в базу?

Пробовал вставлять и через phpmyadmin и через свой код PHP (код сверху)

Это сообщение отредактировал(а) Nickname - 23.5.2008, 17:36
PM MAIL   Вверх
skyboy
Дата 23.5.2008, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(Nickname @  23.5.2008,  16:33 Найти цитируемый пост)
Пробовал вставлять и через phpmyadmin

и как проверяешь? через PHPmyadmin же или через свой скрипт?

M
skyboy
Перенесено из раздела MySQL

PM MAIL   Вверх
Nickname
Дата 24.5.2008, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Цитата

и как проверяешь? через PHPmyadmin же или через свой скрипт?

И так, и так.
выводишь на страницу запрос - все нормально:
Код

INSERT INTO test SET pole='Ò'

а смотришь в код страницы - видешь:
Код

INSERT INTO test SET pole=' & # 2 1 0 ; '

хотя если в firefox-е просмотреть код выделенного фрагмента, то все ок:
Код

INSERT INTO test SET pole='Ò'


Так чему верить, т.е. в результате у меня хранится в базе не набор, а именно символ?
PM MAIL   Вверх
Nickname
Дата 27.5.2008, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



А про мою тему забыли?
PM MAIL   Вверх
skyboy
Дата 27.5.2008, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(Nickname @  24.5.2008,  11:35 Найти цитируемый пост)
Так чему верить

напиши скрипт, который:
а) подключается к БД
б) читает запись
в) выводит её на экран
Посмотри, что тебе вернет.
Цитата(Nickname @  24.5.2008,  11:35 Найти цитируемый пост)
а смотришь в код страницы - видешь:

ты уверен, что htmlspecialchars не вызывается?

Добавлено через 2 минуты и 30 секунд
полный ответ на вопрос
Цитата(Nickname @  23.5.2008,  15:26 Найти цитируемый пост)
Почему, когда вставляешь новую запись, в которой содержаться символы unicode (например Ó) в таблицу (таблица типа utf8), то в таблицу попадает не сам символ а заменяющая его последовательность ( & # 211 ; )?

будет:
Не надо вставлять вместо символа его код.
Т.е. ты либо читаешь с преобразованием, либо пишешь с преобразованием.
учитывая, что ты привел код записи, то, если это весь код, "преобразование" ты проводишь при выводе, код которого ты не дал.
PM MAIL   Вверх
Feldmarschall
Дата 27.5.2008, 14:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Тема не имеет смысла.
Всем, кроме тебя, известно, что база никак информацию не меняет, если её об этом не попросить.
Следовательно, описанная тобой ситуация невозможна.
Следовательно, преобразование происходит не в базе.

Смотреть, что у тебя в базе, можно в консоли. 
проверять надо без форм, как у тебя, а напрямую записывая в запрос нужное значение.
PM   Вверх
Nickname
Дата 27.5.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 24.10.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Спасибо - понятно объяснили
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0493 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.