Jump to content
  • 0

PHP строки в кодировке utf-8 выводятся по разному


vanix
 Share

Question

Данные из БД выводятся нормально, строки вбитые в html тоже выводятся нормально, а у строк обработанных в php символы выглядят следующем образом : �.

Проверял через:


mb_detect_encoding($string)

В обоих случаях выводится UTF-8

.htaccess:


AddDefaultCharset utf-8

Добавление в .htaccess:


PHP_VALUE default_charset utf-8

не помогло.

При подключении к базе прописано:


mysql_query("SET NAMES utf8")
or exit(mysql_error());
mysql_query("SET CHARACTER SET utf8")
or exit(mysql_error());

Инфо по серверу : http://db.tt/hY5XTmLV

Может кто сталкивался? подскажите хотя бы куда копать. Заранее благодарю)

Edited by vanix
Link to comment
Share on other sites

17 answers to this question

Recommended Posts

  • 0

Помню сама когда с таким столкнулась долго над этим билась.

1. Убедиться, что .php файлы закодированы в UTF-8 without BOM

2. Добавить в самое начало документа следующее:


<?php
header('Content-type: text/html; charset=utf-8');
?>

Link to comment
Share on other sites

  • 0

Помню сама когда с таким столкнулась долго над этим билась.

1. Убедиться, что .php файлы закодированы в UTF-8 without BOM

2. Добавить в самое начало документа следующее:


<?php
header('Content-type: text/html; charset=utf-8');
?>

Посмотрел файлы в UTF-8 without BOM, добавлял header('Content-type: text/html; charset=utf-8'); - чего то не помогает.

Какие еще идеи?

Link to comment
Share on other sites

  • 0

есть index.php в него инклудится content,php, в content.php выполняется запрос, выводятся данные из запроса и одно поле из запроса обрабатывается:


$curTableOfContents = substr($row[title], 0, 1);

и тоже выводится

Link to comment
Share on other sites

  • 0

Все файлы в UTF-8 without BOM

ОС - Linux vanixDesktop 3.5.0-17-generic #28-Ubuntu SMP Tue Oct 9 19:32:08 UTC 2012 i686 athlon i686 GNU/Linux

Стоит отдельно Apache/2.2.22 (Ubuntu) + MySQL 5.5.31 + PHP 5.4.6-1ubuntu1.2, в первом посте есть ссылка на phpinfo();

Edited by vanix
Link to comment
Share on other sites

  • 0

в секцию [client] добавил default-character-set = utf-8

а в секцию [mysqld] добавил character_set_server = utf8

mysql> show variables like 'char%';

+————————--+—————————-+

| Variable_name | Value |

+————————--+—————————-+

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+————————--+—————————-+

8 rows in set (0.00 sec)

Ничего не изменилось

Кстати я проверял под виндой на денвере, такая же ерунда.

Edited by vanix
Link to comment
Share on other sites

  • 0

Решение вашей проблемы описано тут.

В вашем случае проблемная функция находится в файле content.php дважды.

Первый раз в 137 строке и второй в 206.

+ перекодируйте файлы footer.php и connect.php в UTF-8 without BOM

Edited by Daiver
  • Like 1
Link to comment
Share on other sites

  • 0

P.S. А тут описано правильное использование функций для таких случаев.

Daiver, спасибо огромное, подвох оказывается был там где вообще не ждал)

+ Через что вы смотрите кодировку файлов?

Посмотрел кодировку в терминале у всех файлов там utf-8, через geany там тоже utf-8, запустил виртуальную машину с win7 в notepad++ там utf-8 without BOM.

Link to comment
Share on other sites

  • 0

+ Через что вы смотрите кодировку файлов?

Я открывала в Notepad ++ v.5.9.6.2 Windows Vista у меня выше перечисленные файлы из папки php из того что вы переслали отображаются не в той кодировке. Возможно я получила устаревшую версию и в вашей версии уже у всех правильная кодировка.

Link to comment
Share on other sites

  • 0

с кириллическими строками в кодировке utf-8 нужно использовать мультибайтовые методы mb_* это расширение php mbstring. Стандартные методы для работы со строками работают с кириллическими символами в utf-8 с ошибками.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy