|
 1.9 Кб |
|
| Люди такой вопрос:
Написал я страничку для работы в базе sql, всё работает отл. тока когда ввожу данные в базу на руском сохроняеться что-то вроде в таком ввиде фвакемы помогите что делать? он принимает тока ангийский( данные ввожу с помощью явыскрипт аякса рхр... короче страница не перезагружаеться но php команды выполняются
Когда на странице (где выполняется) скрипт пишу такое:
header("Content-Type: text/html; charset=utf-8");
становиться тока хуже весь текст на странице превращаеться в зелёные ромбики с вопросительным знаком | |
|
|
|
|
|
|
|
для: Dazzl
(28.12.2011 в 23:04)
| | 1. Данные в базе данных в какой кодировке хранятся? В базе данных (например, через phpMyAdmin) текст нормально отображается?
2. В META-тэге HTML-страницы какая кодировка указана? | |
|
|
|
|
|
|
|
для: 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");
дело в том что когда я сохроняю на прямую все ок а когда через аякс ява и т.д. то муть сохроняеться | |
|
|
|
|
|
|
|
для: Dazzl
(28.12.2011 в 23:42)
| | Значит данные уже искажены в базе данных. Как данные попадают туда? | |
|
|
|
|
|
|
|
для: cheops
(29.12.2011 в 00:15)
| | Данные попадают в базу так:
на странице формулируется запрос отправляется на другую страницу .js там (там запрос явыскрипт переводиться в рхр запрос) запрос отправляется на третью страницу .php далее данные запроса вводятся в базу и ответ возвращается на первую (в итоге страница не перезагружается и данные попадают в базу и приходит ответ на первую страницу)
в начале к перво странице приключается библиотека jQuery.min.js | |
|
|
|
|
|
|
|
для: Dazzl
(28.12.2011 в 23:42)
| | попробуй ка вместе со вторым (где header(), а meta не надо выводить только), написать еще mysql_query('SET NAMES `utf8`'); перед всеми запросами | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: 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-пользователя и при установке соединения с базой данных подставляется пустая строка. | |
|
|
|
|
|
|
|
для: cheops
(29.12.2011 в 13:46)
| | а вместо `SET NAMES` надо ли вводить что либо, название базы, таблицы и т.д.? | |
|
|
|
|
|
|
|
для: Dazzl
(29.12.2011 в 14:02)
| | Нет, SET NAMES таки должен быть без изменений - это оператор, он сообщает MySQL-серверу, в какой кодировке клиент будет отправлять данные и в какой кодировке он хочет их получать. Это позволяет хранить данные на сервере в одной кодировке, а вводить/выводить в другой. Однако, такой функционал вынуждает вас явно указывать кодировку, всякий раз, когда она отлична от latin1. | |
|
|
|
|
|
|
|
для: cheops
(29.12.2011 в 13:46)
| | я проверил кодировку соеденения так:
$connect = mysql_connect('localhost','root','') or die ('dd');
$charset = mysql_client_encoding($connect);
echo $charset;
|
Выводит это: latin1 что это значит? | |
|
|
|
|
|
|
|
для: Dazzl
(29.12.2011 в 14:16)
| | Это европейская кодировка MySQL (родина MySQL - Швеция, поэтому такая кодировка используется по умолчанию), если вам нужна другая, её следует выставить при помощи SET NAMES. | |
|
|
|