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

Форум MySQL

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

 

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

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

тема: Проблема кодировки
 
 автор: Dazzl   (28.12.2011 в 23:04)   письмо автору
1.9 Кб
 
 

Люди такой вопрос:

Написал я страничку для работы в базе sql, всё работает отл. тока когда ввожу данные в базу на руском сохроняеться что-то вроде в таком ввиде фвакемы помогите что делать? он принимает тока ангийский( данные ввожу с помощью явыскрипт аякса рхр... короче страница не перезагружаеться но php команды выполняются

Когда на странице (где выполняется) скрипт пишу такое:
header("Content-Type: text/html; charset=utf-8");
становиться тока хуже весь текст на странице превращаеться в зелёные ромбики с вопросительным знаком

  Ответить  
 
 автор: cheops   (28.12.2011 в 23:17)   письмо автору
 
   для: Dazzl   (28.12.2011 в 23:04)
 

1. Данные в базе данных в какой кодировке хранятся? В базе данных (например, через phpMyAdmin) текст нормально отображается?
2. В META-тэге HTML-страницы какая кодировка указана?

  Ответить  
 
 автор: Dazzl   (28.12.2011 в 23:42)   письмо автору
 
   для: cheops   (28.12.2011 в 23:17)
 

В самой базе сохраняеться такая же билибирда

на странице пробовал и это:

<META HTTP – EQUIV="Content – Type" content="text/html" charset="windows – 1251">

и это

header("Content-Type: text/html; charset=utf-8");

дело в том что когда я сохроняю на прямую все ок а когда через аякс ява и т.д. то муть сохроняеться

  Ответить  
 
 автор: cheops   (29.12.2011 в 00:15)   письмо автору
 
   для: Dazzl   (28.12.2011 в 23:42)
 

Значит данные уже искажены в базе данных. Как данные попадают туда?

  Ответить  
 
 автор: Dazzl   (29.12.2011 в 11:28)   письмо автору
 
   для: cheops   (29.12.2011 в 00:15)
 

Данные попадают в базу так:

на странице формулируется запрос отправляется на другую страницу .js там (там запрос явыскрипт переводиться в рхр запрос) запрос отправляется на третью страницу .php далее данные запроса вводятся в базу и ответ возвращается на первую (в итоге страница не перезагружается и данные попадают в базу и приходит ответ на первую страницу)

в начале к перво странице приключается библиотека jQuery.min.js

  Ответить  
 
 автор: nikita2206   (29.12.2011 в 00:23)   письмо автору
 
   для: Dazzl   (28.12.2011 в 23:42)
 

попробуй ка вместе со вторым (где header(), а meta не надо выводить только), написать еще mysql_query('SET NAMES `utf8`'); перед всеми запросами

  Ответить  
 
 автор: Dazzl   (29.12.2011 в 10:51)   письмо автору
 
   для: nikita2206   (29.12.2011 в 00:23)
 

нее ругается так:



Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in Z:\home\test1.ru\www\q.php on line 1

Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in

  Ответить  
 
 автор: cheops   (29.12.2011 в 13:46)   письмо автору
 
   для: Dazzl   (29.12.2011 в 10:51)
 

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

>Access denied for user 'ODBC'@'localhost' (using password: NO) in Z:\home\test1.ru\www\q.php on
>line 1
Это означает, что у вас не прав доступа. Более того, это означает, что вы работаете из под анонимного пользователя, где-то у вас потерялось имя MySQL-пользователя и при установке соединения с базой данных подставляется пустая строка.

  Ответить  
 
 автор: Dazzl   (29.12.2011 в 14:02)   письмо автору
 
   для: cheops   (29.12.2011 в 13:46)
 

а вместо `SET NAMES` надо ли вводить что либо, название базы, таблицы и т.д.?

  Ответить  
 
 автор: cheops   (29.12.2011 в 15:59)   письмо автору
 
   для: Dazzl   (29.12.2011 в 14:02)
 

Нет, SET NAMES таки должен быть без изменений - это оператор, он сообщает MySQL-серверу, в какой кодировке клиент будет отправлять данные и в какой кодировке он хочет их получать. Это позволяет хранить данные на сервере в одной кодировке, а вводить/выводить в другой. Однако, такой функционал вынуждает вас явно указывать кодировку, всякий раз, когда она отлична от latin1.

  Ответить  
 
 автор: Dazzl   (29.12.2011 в 14:16)   письмо автору
 
   для: cheops   (29.12.2011 в 13:46)
 

я проверил кодировку соеденения так:

$connect = mysql_connect('localhost','root','') or die ('dd');

$charset = mysql_client_encoding($connect);
echo $charset;


Выводит это: latin1 что это значит?

  Ответить  
 
 автор: cheops   (29.12.2011 в 16:00)   письмо автору
 
   для: Dazzl   (29.12.2011 в 14:16)
 

Это европейская кодировка MySQL (родина MySQL - Швеция, поэтому такая кодировка используется по умолчанию), если вам нужна другая, её следует выставить при помощи SET NAMES.

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

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