Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Комплексный вопрос по кодировкам в PHP-скриптах и 
:(
    Опции темы
barcelona
Дата 15.12.2007, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



   
Здравствуйте!
У меня проблема следующего рода. Для того, чтобы мои страницы отображались нормально, мне необходимо их хранить в кодировке utf-8. До этого я работал с windows-1251. Я перевожу страницы следующим образом (знаю, способ топорный, но ...): создаю новую страницу в Notepad, далее "Кодировки"-->"Кодировать в UTF-8" и вставляю содержимое. Тег meta в этих документах (если он присутствует, конечно) я также выставляю utf-8. При такой организации у меня резко перестали работать все проверки на русские буквы (в php-скрипте), я думаю, скрипт их просто не "узнаёт". Ну и наконец сама база MySQL, куда вставляются мои данные. Я её создал следующим запросом:    
Код

CREATE DATABASE `library` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 

у текстовых полей таблиц кодировка та же. Вместо русских букв вставляется какая-то хрень вроде ыфвфыа. 
Итак:
1) Как мне правильно переводить страницы в utf-8? Думаю, я что-то не так сделал.
2) Почему проверки на русские буквы не работают?
3) Что мне делать со вставкой в базу?
Заранее спасибо.
PM MAIL   Вверх
Feldmarschall
Дата 15.12.2007, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



1. Ты правильно перевел страницы в utf-8
2. Проверки не работают потому, что стандартные функции пхп не работают с многобайтными кодировками. Надо использовать mbsting_*
3. в FAQ форума заглядывал?

Добавлено через 2 минуты и 34 секунды
А, сорри. Это ЧАВО из другого форума
http://forum.vingrad.ru/index.php?showtopi...st&p=804974
PM   Вверх
barcelona
Дата 15.12.2007, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



mbsting? Ответный вопрос: как мне использовать mbsting для проверки регулярных выражений? Т.е. раньше было 
Код

preg_match('|[^а-яА-ЯёЁ\s]|',$sName)

а теперь что?

Это сообщение отредактировал(а) barcelona - 15.12.2007, 12:26
PM MAIL   Вверх
Feldmarschall
Дата 15.12.2007, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



http://us2.php.net/manual/en/function.preg-match.php#79273

Добавлено через 50 секунд
или так.
http://64.233.183.104/search?q=cache:10Pnk...n&inlang=ru

вот только это форум про базы данных, а не про поиск в гугле...................................................................
PM   Вверх
skyboy
Дата 15.12.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



Цитата(barcelona @  15.12.2007,  11:08 Найти цитируемый пост)
Вместо русских букв вставляется какая-то хрень вроде ыфвфыа. 

это выводится некорректно(content-encoding в <meta> для html, или в рнр приотправке контента - header с таким же содержимым). или читается из БД(set names). вставился utf-8. а отображаться пытается как ср1251. выводится на странице? или в программе?

Добавлено через 1 минуту и 44 секунды
d регулярных выражениях для работы с unicode следует указывать модификатор u
PM MAIL   Вверх
Feldmarschall
Дата 15.12.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



а странно, все-таки, что в прошлой теме никто не написал про буфферинг и iconv...
PM   Вверх
barcelona
Дата 15.12.2007, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 203
Регистрация: 21.4.2007

Репутация: нет
Всего: нет



Feldmarschall, я извиняюсь за оффтоп. skyboy, проблему с базой я решил, благодаря 
Код

SET NAMES utf8;

Всем спасибо. 
С проверкой полей в PHP родил правильное решение следующим способом:
$pattern='/[^а-яА-ЯёЁ\s]/u';
Работает. А вопрос такой: на моей домашней машине документы в кодировке utf-8 отображаются нормально, а на работе - сплошные закорючки. Нужно менять настройки сервера?

Это сообщение отредактировал(а) barcelona - 15.12.2007, 13:40
PM MAIL   Вверх
N0dwis
Дата 21.12.2007, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 18.9.2007
Где: Луганск

Репутация: нет
Всего: 4



Были похожие проблемы с MySQL.
Если 5-я версия, то может помочь такой параметр в my.ini

[mysqld]
skip-character-set-client-handshake

Это я так понял отменяет согласование кодировок между сервером и клиентом и устанавливает кодировку данных ту, что по умолчанию в MySQL. Хотя если кто объяснить подробнее, буду очень благодарен.
PM MAIL   Вверх
Feldmarschall
Дата 21.12.2007, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



N0dwis, ты правильно понимаешь. skip-character-set-client-handshake - это то же самое, что SET NAMES равное кодировке БД. То есть, практически переводит БД в режим до-4.1.
Поможет только в том случае, если кодировка БД совпадает с кодировкой страниц.

подробнее - почитай тут http://phpfaq.ru/charset и далее по ссылкам.
ну - или в документации  smile 
PM   Вверх
N0dwis
Дата 21.12.2007, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 18.9.2007
Где: Луганск

Репутация: нет
Всего: 4



Спасибо большое.
Наконец расставил все точки над i в этом вопросе.
PM MAIL   Вверх
Feldmarschall
Дата 21.12.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Не зарекайся! Я тоже так думал  smile 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.