<
  • Главная
Статьи

różne kodowania php

  1. Wydawca
  2. x64 (alias andi)

początkujący autorzy skryptów nie dbają o kodowanie

początkujący autorzy skryptów nie dbają o kodowanie. Dlatego na stronach można czasem znaleźć straszny bałagan, gdy dane z bazy danych są uzyskiwane w jednym kodowaniu, strona jest tworzona w innym, a serwer otrzymuje trzeci. w rezultacie, jeśli strona może zostać odszyfrowana, to przynajmniej 2 razy. Dlaczego więc taki problem występuje i jak go pokonać?

w segmencie rosyjskim najczęściej można znaleźć tak zwane kodowanie okien. nazwij to inaczej: windows-1251, cp1251 lub nawet ansi. następny to utf-8. Możesz również znaleźć nazwę unicode, ale nie jest to całkowicie poprawne, ponieważ Unicode jest ogólną nazwą całej grupy (utf-8, utf-16, utf-32). a bardzo popularną rzadkością jest koi8-r lub po prostu koi-8 - niegdyś popularne kodowanie Linuksa. Oczywiście w rosyjskim segmencie można spotkać coś innego, ale autor to raczej „odpust”.

Główna różnica między utf-8 i innymi (przede wszystkim windows-1251 i koi8-r) to ostatni bajt, a maksymalna liczba znaków, które można przedstawić za pomocą tych kodowań, jest ograniczona do 256. Jest rzeczą oczywistą, że w celu pełnego przedstawienia tekstu tego kodowania może nie wystarczyć. a dla html znaleziono rozwiązanie - użycie tak zwanych mnemoników. na przykład:

© - & copy;

Oprócz tego, że każda taka postać jest opisywana przez grupę znaków, kod staje się nieczytelny, a praca z tekstem staje się bardziej skomplikowana. w tym miejscu ratuje wielobajtowy utf-8. bardzo wygodne jest używanie liter różnych alfabetów i różnych symboli w jednym tekście.

Zatem najwygodniejszy zestaw warunków początkowych jest następujący: kodowanie bazy danych, skryptów php i skryptów html / js powinno być takie samo. Oczywiście możesz używać różnych, ale w tym przypadku istnieje ryzyko pomylenia. nie ma znaczenia, która strona kodowa jest używana. jeśli witryna jest przeznaczona tylko dla odbiorców rosyjskojęzycznych, system Windows-1251 będzie wystarczający. w przeciwnym razie utf-8 byłby logicznym wyborem. pierwsza opcja jest mniej lub bardziej wyraźna. kodowanie wielobajtowe będzie wymagało pewnych gestów.

Podczas pracy z utf-8 standardowy notatnik notatnika nie będzie działał ! Faktem jest, że ten edytor, podczas zapisywania pliku w tym kodowaniu, dodaje podpis do początku - 3 znaki, tak zwany bom (znak kolejności bajtów), który może być użyty do określenia kodowania podczas otwierania pliku. lepiej wybrać inny edytor: notatnik2 lub notatnik ++ . w ustawieniach musisz wybrać zapisywanie bez podpisu.

Kolejnym ważnym krokiem jest praca z bazą danych. Jest wysoce pożądane, aby kodowanie pola base / table / text pasowało do kodowania skryptu (może to być cp1251 lub utf-8 lub coś innego). jeśli dane z bazy danych są uzyskiwane w formie „zyuk”, najprawdopodobniej kodowanie połączenia różni się od danych przechowywanych w bazie danych. Następujące zapytanie pomoże przezwyciężyć sytuację (wykonać natychmiast po połączeniu z bazą danych):

jeśli strona używa Windows-1251, należy ją określić - cp1251.

ogólnie rzecz biorąc, nie ma nic trudnego. tylko standardowe funkcje php nie są przeznaczone do pracy z ciągami wielobajtowymi. ale istnieją standardowe biblioteki, które pomogą poprawić sytuację: iconv i mbstring . w przypadku wyrażeń regularnych istnieje również niezbędny przełącznik, który jest aktywowany za pomocą modyfikatora u .

Cóż, dane z bazy danych są uzyskiwane, skrypty są zapisywane zgodnie ze wszystkimi regułami. Pozostaje wysłać prawidłowy tytuł i wyświetlić kod strony w przeglądarce użytkownika. wysyłamy nagłówek tak:

header ('Content-Type: text / html; charset = utf-8');

jeśli używane jest kodowanie jednobajtowe, wartość zestawu znaków będzie inna - windows-1251 . Po tym problemy nie powinny pozostać.

Najprostsze przykłady pracy z utf-8 w php:

przykład 1: iconv, liczba znaków w linii

$ s = 'string'; # ciąg w utf-8 $ cnt1 = strlen ($ s); # będzie zawierać wartość 12 $ cnt2 = iconv_strlen ($ s, 'UTF-8'); # poprawna wartość, 6

przykład 2: mbstring, liczba znaków w ciągu

$ s = 'string'; # ciąg w utf-8 $ cnt1 = strlen ($ s); # będzie zawierać wartość 12 $ cnt2 = mb_strlen ($ s, 'UTF-8'); # poprawna wartość, 6

przykład 3: wyrażenia regularne, szukaj i zamień

$ s = 'String'; # line w utf-8 $ s = preg_replace ('/ p / i', 'd', $ s); # zastąpienie nie nastąpi $ s = preg_replace ('/ p / iu', 'd', $ s); # wynik słowa dok

modyfikator i określa wyszukiwanie bez rozróżniania wielkości liter, a modyfikator u mówi silnikowi wyrażeń regularnych, aby pracował z ciągami utf-8.

jeśli ktoś powie, że php nie może działać z utf-8, będzie źle. Od kilku lat wykonuję wszystkie moje projekty w tym kodowaniu i nie było żadnych problemów. Wyszukiwarki same od dawna używają tego wspaniałego kodowania.

Wydawca

offline 11 godzin

x64 (alias andi)

Komentarze: 2846 Publikacje: 395 Rejestracja: 02-04-2009

Dlaczego więc taki problem występuje i jak go pokonać?


Новости
    Без плагина
    На сайте WordPress имеется файл, именуемый как .htaccess. Многие пользователи не предают ему особого внимания и не используют все его возможности. На самом деле файл .htaccess – это дополнительные конфигурации

    Плагин подписки wordpress
    Очень трудно найти один плагин подписки wordpress , который объединил бы в себе все виды подписок, которые так необходимы сайту. Именно поэтому я решил сделать подборку лучших плагинов, которые смогут

    Слайд-шоу с помощью плагина для WordPress UnPointZero Slider
    Плагин для cms WordPress UnPointZero Slider – новостной слайдер. Он отражает в форме слайд-шоу изображения со ссылками на ваши статьи и краткие выдержки оттуда. Его можно установить и на новостной сайт,

    Плагины для Wordpress
    С помощью этого плагина вы легко сможете интегрировать Google диск на ваш WordPress сайт или блог . Gravity Forms — лучший плагин для создания форм на WordPress, от самых простых (например, форма

    Подписки плагином JetPack: размещение и редакция формы подписки
    Вступление Здравствуйте! В этой статье я покажу, как использовать плагин JetPack для создания пользовательской формы подписки и как эту формы подписки плагином JetPack добавлять в статьи сайта, а при

    Чистка сайта WordPress плагином WP-optimize
    От автора Со временем использования система WordPress накапливает не нужные файлы, комментарии и неиспользуемые данные в базе данных. Эти файлы и данные создаются в процессе работы и нужны для этого,

    Возможности Jetpack плагина
    Вступление Возможности Jetpack плагина это более 30 функциональных модуля плагина, делающего его универсальным плагином WordPress, заменяющего аналогичные сторонние плагины. Jetpack один заменяет десятки

    Резервное копирование WordPress сайта без плагинов
    Вступление Резервное копирование WordPress это второе, что нужно научиться делать после установки WordPress. Можно сколько угодно говорить о безопасности сайта и его защите, но лучшего варианта защиты

    Плагины на приват для Майнкрафт ПЕ
    > > Плагины на приват для Майнкрафт ПЕ Порой всем нам хочется попробовать себя в роли администратора сервера и испытать эту ответственность, но, к сожалению, вы не всегда все знаете о создании

    Плагин WordPress Database Backup. Архивация базы данных блога на WordPress
    Привет друзья! Сегодня на очереди еще один простой, НО, необходимый и полезный плагин — плагин WordPress Database Backup , который с легкостью и самостоятельно произведет процесс, который научно называется:

  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью