Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Трабл с кириллицей

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
improbable
Отправлено: 20 Марта, 2012 - 23:01:15
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




в БД есть столбцы book_1; book_2; .....; book_5.
каждый из них имеет тип varchar(100) и кодировку utf8_general_ci.

есть следующий скрипт:

PHP:
скопировать код в буфер обмена
  1.  
  2.     include 'database.php';
  3.                 mysql_query('SET NAMES utf8');
  4.                 $id = $_GET["id"];
  5.                 $query = "SELECT * FROM `accounts` WHERE `user_id`=".$id;
  6.                 $sql = mysql_query($query);
  7.                 $row = mysql_fetch_array($sql);
  8.                         echo "<center>";
  9.                                 echo "<h1>Сейчас читает: </h1><br>";
  10.                                         echo "Книга 1: " . $row['book_1'] . "<br>";
  11.                                         echo "Книга 2: " . $row['book_2'] . "<br>";
  12.                                         echo "Книга 3: " . $row['book_3'] . "<br>";
  13.                                         echo "Книга 4: " . $row['book_4'] . "<br>";
  14.                                         echo "Книга 5: " . $row['book_5'] . "<br>";
  15.  


Столбцы book_1...book_5 заполнены данными типа "вася петя", т.е. кириллицей.
В MySQL (администрирую через phpmyadmin) все отображается корректно, а вот в html все выходит в виде вопросов.

После того как добавил строчку



Выводит не вопросы, а вот это http://mocrenco[dot]comuf[dot]com/users.php?id=1 (перейдите)

Цитата:
Книга 1: федя
Книга 2: дмитрий
Книга 3: йцйу
Книга 4: веанпгшощлздлор
Книга 5:


Что делать?
В настройках БД менял общую кодировку со стандартной на utf8_general_ci, не помогло.
Срочно прошу помощи, мне на курсовую все это дело в четверг.


Прошу сайтец не ломать die'ми, проверяющие все равно это не учтут, если останется время - исправлю и это.

(Отредактировано автором: 20 Марта, 2012 - 23:02:03)

 
 Top
OrmaJever
Отправлено: 20 Марта, 2012 - 23:14:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




файл скрипта должен быть сохранён в utf-8


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Телевизор
Отправлено: 21 Марта, 2012 - 00:25:20
Post Id



Посетитель


Покинул форум
Сообщений всего: 369
Дата рег-ции: Март 2010  
Откуда: с яндекса


Помог: 3 раз(а)




Попробуйте дописать к

вот это:
PHP:
скопировать код в буфер обмена
  1.     mysql_query("SET NAMES 'utf8';",$link);
  2.     mysql_query("SET CHARACTER SET 'utf8';",$link);
  3.     mysql_query("SET SESSION collation_connection = 'utf8_general_ci';",$link);


+ ко всему этому в хтасес добавьте/измените:
CODE (htmlphp):
скопировать код в буфер обмена
  1. php_value default_charset utf-8
  2. AddDefaultCharset utf-8


и как сказал OrmaJever файл скрипта в utf преобразовать.

(Отредактировано автором: 21 Марта, 2012 - 00:43:08)

 
 Top
OrmaJever
Отправлено: 21 Марта, 2012 - 00:39:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Телевизор, не, там сам файл скрипта в ancii.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Телевизор
Отправлено: 21 Марта, 2012 - 01:01:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 369
Дата рег-ции: Март 2010  
Откуда: с яндекса


Помог: 3 раз(а)




OrmaJever
Ну такта да Радость
Насколько я фтыкаю база и отдача сервера должны быть одинаковы в кодировке.
а файл скрипта может быть ancii и в utf-8 как мне кажется без разницы,
если НЕ кирилица в файле скрипта - тогда будет наоборот, выборка из базы норм. а кирилица в файле калямаля выдовать или квадратные нули...
 
 Top
OrmaJever
Отправлено: 21 Марта, 2012 - 01:15:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




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

(Отредактировано автором: 21 Марта, 2012 - 01:29:11)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Телевизор
Отправлено: 21 Марта, 2012 - 01:38:27
Post Id



Посетитель


Покинул форум
Сообщений всего: 369
Дата рег-ции: Март 2010  
Откуда: с яндекса


Помог: 3 раз(а)




а как же апач он же наверняка отдает стандартный заголовок cp1251
я тут похимичил что врезультате:
sql - utf-8
файл - utf-8
апачч - по стандарту cp1251
- - - -
равно все калямаля

его же тоже нужно апач в utf-8

я так подозреваю/догадываюсь с Ваших слов что в настройках сервера возможно сделать автоматическую настройку кодировки исходя кодировки файла.
Какой файл, такая кодировка сервера и не устанавливать её в хтассес или php.ini.
или это моя грань фантастики?
если так то получается мы говорим о разных подходах настройки.

(Отредактировано автором: 21 Марта, 2012 - 01:49:39)

 
 Top
OrmaJever
Отправлено: 21 Марта, 2012 - 01:49:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Да, я тоже только что глянул, если нету заголовка с кодировкой то апач его не добавляет и браузер сам решает как выводить. Значит ещё обязательно нужно заголовок добавить
PHP:
скопировать код в буфер обмена
  1. header('Content-type: text/html; charset=utf-8');


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Телевизор
Отправлено: 21 Марта, 2012 - 01:56:41
Post Id



Посетитель


Покинул форум
Сообщений всего: 369
Дата рег-ции: Март 2010  
Откуда: с яндекса


Помог: 3 раз(а)




а
PHP:
скопировать код в буфер обмена
  1. header ('Content-type: text/html; charset=utf-8');

и
htacces строки:
CODE (htmlphp):
скопировать код в буфер обмена
  1. php_value default_charset utf-8
  2. AddDefaultCharset utf-8


это же одно и тоже получается?
 
 Top
OrmaJever
Отправлено: 21 Марта, 2012 - 02:02:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Получается, но ведь это прописывается в файле .htaccess и действует на всю папки и подпаки, а там наверняка есть файлы в кодировке ancii которые перестанут работать.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Телевизор
Отправлено: 21 Марта, 2012 - 02:18:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 369
Дата рег-ции: Март 2010  
Откуда: с яндекса


Помог: 3 раз(а)




OrmaJever пишет:
Получается, но ведь это прописывается в файле .htaccess и действует на всю папки и подпаки, а там наверняка есть файлы в кодировке ancii которые перестанут работать.


Кстати да !!!
Значить тогды header с utf-8, если он не собрался переезжать на полный utf-8 Улыбка


все мен тему мы размазали до четверга успеешь Радость

(Отредактировано автором: 21 Марта, 2012 - 02:21:18)

 
 Top
Мелкий Супермодератор
Отправлено: 21 Марта, 2012 - 08:29:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




OrmaJever пишет:
наверняка есть файлы в кодировке ancii которые перестанут работать.

0) что такое ancii? Может, ASCII или ansi (ошибочно так называемой, вместо ANSI X3.4, представляющей собой, в свою очередь, ASCII)?
1) с чего они перестанут работать? UTF8 включает в себя в неизменном виде ASCII.


-----
PostgreSQL DBA
 
 Top
improbable
Отправлено: 21 Марта, 2012 - 15:39:25
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Февр. 2012  


Помог: 0 раз(а)




После того, как я прописал header, содержимое страницы стало таким:

Цитата:
Administrator
������ ������:

����� 1: федя
����� 2: дмитрий
����� 3: йцйу
����� 4: веанпгшощлздлор
����� 5:


А когда в Notepad изменил кодировку, все заработало.
Только надо было клацать не на смену кодировки, а на преобразование.

Всем спасибо
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB