|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
|
maxipub |
|
|||
Опытный Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: нет Всего: 1 |
Здравствуйте!
По долгу службы веду один большой и старый проект на PHP. Программирование для меня больше хобби, которым занимаюсь последние лет 20, и я уже изрядно в этом деле отстал. Недавно меняли древний сервер, на котором крутился сайт, на более современный, тогда же и перешли с PHP 5.3 на 7.1. Это было не сложно, документации много. Так же нужно было перейти с MySQL на MySQLi, т.к. в 7-ке MySQL уже удалено. Тук так же все прошло гладко, инфы полно. Теперь встала задача сменить кодировку проекта с Windows-1251 на UTF-8. Честно скажу, с UTF-8 плотно никогда не сталкивался. Знаю что там есть свои нюансы, например, если я правильно понимаю, чтобы узнать количество символов в строке нужно использовать не привычный strlen, а mb_strlen, и т.д. Сколько таких нюансов, и какие есть другие - кто его знает... Ребята, возможно есть какой-то мануал, чек лист и т.д. по переходу движка на PHP от Windows-1251 к UTF-8? Сколько искал, ничего подобного так и не нашел. Заранее спасибо! |
|||
|
||||
ksnk |
|
|||
прохожий Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
maxipub,
Для начала - перекодировать все исходники на utf-8 и поменять кодовую страницу сайта на utf-8 В регулярках, если они используются для парсинга строки с русскими символами, добавить ключик /u. Почти все функции работы со строками надо будет менять на те же с префиксом mb_. Но там тоже не все так просто, иногда придется явно указывать кодировку в таких функциях, я встречал случаи, когда были глюки. Дело муторное, но, в принципе, процесс сходится и довольно быстро. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
maxipub |
|
||||||
Опытный Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: нет Всего: 1 |
ksnk, спасибо большое за участие. Это в принципе ясно. Вопрос в большей степени по части PHP. Возможно, есть какие-то списки таких функций:
Чтоб пройтись по ним. Или где бы рассматривались все возможные ситуации как:
И
? Смена версии PHP или переход от MySQL к MySQLi в куче мест описан детально. А вот по сабжу так ничего и не нашел. Я же не могу пересматривать 900кб кода и перепроверять каждую функцию в нем. |
||||||
|
|||||||
whatisnot |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 130 Регистрация: 14.12.2014 Репутация: 1 Всего: 2 |
Плюс нужно все файлы перезаписать в кодировке UTF и обязательно без ВОМ, по крайней мере те, в которых явно указывается либо используется как подключаемый текст.
|
|||
|
||||
maxipub |
|
|||
Опытный Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: нет Всего: 1 |
whatisnot, спасибо, это понятно.
Вопрос о переделке кода PHP. Вот мне уже сказали про /u для регулярок с русскими буквами. Речь именно о таких нюансах. |
|||
|
||||
whatisnot |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 130 Регистрация: 14.12.2014 Репутация: 1 Всего: 2 |
Не с русскими, а для указания того, что данные в UTF. В общем-то о какой-то переделке и говорить не приходится, нужно всего лишь откорректировать то, что учитывает кодировку. Например, если в строке с латиницей и кириллицей заменяется только латиница функцией str_replace, то ничего изменять не надо и для кодировки UTF этой строки, так как латиница в UTF все равно занимает один байт. Если используются ajax запросы, json формат, которые работают только с UTF, значит нужно удалить перекодирование неизбежное при CP1251. Определить кодировку по умолчанию mb_internal_encoding("UTF-8"), как и соответствующую кодировку соединения с базой. Перекодировать таблиц базы. |
|||
|
||||
maxipub |
|
|||
Опытный Профиль Группа: Участник Сообщений: 517 Регистрация: 22.10.2009 Репутация: нет Всего: 1 |
Сайт на русском языке. Так что кириллица сплошь и рядом. |
|||
|
||||
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |