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
Форумы портала PHP.SU :: Версия для печати :: Трабл с кириллицей
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Трабл с кириллицей

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

1. improbable - 20 Марта, 2012 - 23:01:15 - перейти к сообщению
в БД есть столбцы 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'ми, проверяющие все равно это не учтут, если останется время - исправлю и это.
2. OrmaJever - 20 Марта, 2012 - 23:14:40 - перейти к сообщению
файл скрипта должен быть сохранён в utf-8
3. Телевизор - 21 Марта, 2012 - 00:25:20 - перейти к сообщению
Попробуйте дописать к

вот это:
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 преобразовать.
4. OrmaJever - 21 Марта, 2012 - 00:39:15 - перейти к сообщению
Телевизор, не, там сам файл скрипта в ancii.
5. Телевизор - 21 Марта, 2012 - 01:01:24 - перейти к сообщению
OrmaJever
Ну такта да Радость
Насколько я фтыкаю база и отдача сервера должны быть одинаковы в кодировке.
а файл скрипта может быть ancii и в utf-8 как мне кажется без разницы,
если НЕ кирилица в файле скрипта - тогда будет наоборот, выборка из базы норм. а кирилица в файле калямаля выдовать или квадратные нули...
6. OrmaJever - 21 Марта, 2012 - 01:15:37 - перейти к сообщению
браузер не может читать страницу в двух кодировках одновремено, браузер весь файл читает в одной кодировке, а тот текст который в другой получается каракулями. Если в браузере на странице (из первого поста) изменить кодировку на юникод, то текст из базы выводит нормально, а остальной текст символами.
7. Телевизор - 21 Марта, 2012 - 01:38:27 - перейти к сообщению
а как же апач он же наверняка отдает стандартный заголовок cp1251
я тут похимичил что врезультате:
sql - utf-8
файл - utf-8
апачч - по стандарту cp1251
- - - -
равно все калямаля

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

я так подозреваю/догадываюсь с Ваших слов что в настройках сервера возможно сделать автоматическую настройку кодировки исходя кодировки файла.
Какой файл, такая кодировка сервера и не устанавливать её в хтассес или php.ini.
или это моя грань фантастики?
если так то получается мы говорим о разных подходах настройки.
8. OrmaJever - 21 Марта, 2012 - 01:49:21 - перейти к сообщению
Да, я тоже только что глянул, если нету заголовка с кодировкой то апач его не добавляет и браузер сам решает как выводить. Значит ещё обязательно нужно заголовок добавить
PHP:
скопировать код в буфер обмена
  1. header('Content-type: text/html; charset=utf-8');
9. Телевизор - 21 Марта, 2012 - 01:56:41 - перейти к сообщению
а
PHP:
скопировать код в буфер обмена
  1. header ('Content-type: text/html; charset=utf-8');

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


это же одно и тоже получается?
10. OrmaJever - 21 Марта, 2012 - 02:02:00 - перейти к сообщению
Получается, но ведь это прописывается в файле .htaccess и действует на всю папки и подпаки, а там наверняка есть файлы в кодировке ancii которые перестанут работать.
11. Телевизор - 21 Марта, 2012 - 02:18:28 - перейти к сообщению
OrmaJever пишет:
Получается, но ведь это прописывается в файле .htaccess и действует на всю папки и подпаки, а там наверняка есть файлы в кодировке ancii которые перестанут работать.


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


все мен тему мы размазали до четверга успеешь Радость
12. Мелкий - 21 Марта, 2012 - 08:29:58 - перейти к сообщению
OrmaJever пишет:
наверняка есть файлы в кодировке ancii которые перестанут работать.

0) что такое ancii? Может, ASCII или ansi (ошибочно так называемой, вместо ANSI X3.4, представляющей собой, в свою очередь, ASCII)?
1) с чего они перестанут работать? UTF8 включает в себя в неизменном виде ASCII.
13. improbable - 21 Марта, 2012 - 15:39:25 - перейти к сообщению
После того, как я прописал header, содержимое страницы стало таким:

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

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


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

Всем спасибо

 

Powered by ExBB FM 1.0 RC1