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

rôzne kódovanie php

  1. Autori
  2. x64 (aka andi)

začínajúci skript spisovatelia sa nestarajú o také veci ako kódovanie

začínajúci skript spisovatelia sa nestarajú o také veci ako kódovanie. Preto na stránkach môžete niekedy nájsť hrozný neporiadok, keď sa údaje z databázy získajú v jednom kódovaní, stránka sa vytvorí v inom a server dostane tretiu. v dôsledku toho, ak stránku možno dešifrovať, potom aspoň 2 krát. Prečo sa tak stalo a ako ho prekonať?

v ruskom segmente najčastejšie nájdete tzv. kódovanie okien. zavolajte to inak: windows-1251, cp1251 alebo dokonca ansi. ďalšie je utf-8. Môžete tiež nájsť názov unicode, ale to nie je úplne správne, pretože Unicode je všeobecný názov pre celú skupinu (utf-8, utf-16, utf-32). a veľmi populárna rarita je koi8-r alebo jednoducho koi-8 - kedysi populárne kódovanie Linuxu. Samozrejme, v ruskom segmente je možné stretnúť sa s niečím iným, ale je to skôr „zhovievavosť“ autora.

Hlavný rozdiel medzi utf-8 a ostatnými (primárne windows-1251 a koi8-r) je posledný jednobajt a maximálny počet znakov, ktoré možno pomocou týchto kódovaní reprezentovať, je obmedzený na 256. nemusí stačiť. a pre html bolo nájdené riešenie - použitie tzv. mnemotechniky. napríklad:

© - & copy;

Okrem toho, že každý takýto znak je opísaný skupinou znakov, kód sa stáva nečitateľným a práca s textom sa stáva komplikovanejšou. toto je miesto, kde multibyte utf-8 príde na záchranu. je veľmi výhodné používať písmená rôznych abeced a rôznych symbolov v jednom texte.

Preto je najpohodlnejší súbor počiatočných podmienok nasledovný: kódovanie databázy, php skripty a html stránky / js skripty by mali byť rovnaké. Samozrejme, môžete použiť aj iné, ale v tomto prípade hrozí riziko zmätku. Nezáleží na tom, ktorá kódová stránka sa používa. ak je stránka iba pre rusky hovoriaceho publika, Windows-1251 bude dosť dosť. inak by utf-8 bola logická voľba. prvá možnosť je viac či menej jasná. viacbajtové kódovanie bude vyžadovať určité gestá.

Pri práci s utf-8 nebude fungovať štandardný poznámkový blok poznámok ! Faktom je, že tento editor pri ukladaní súboru v tomto kódovaní pridáva na začiatok podpis - 3 znaky, tzv. Bom (značku poradia bajtov), ​​ktoré možno použiť na určenie kódovania pri otváraní súboru. je lepšie zvoliť iného editora: Notepad2 alebo poznámkový blok ++ , v nastaveniach musíte zvoliť uloženie bez podpisu.

Ďalším dôležitým krokom je práca s databázou. Je veľmi žiaduce, aby kódovanie základného / tabuľkového / textového poľa zodpovedalo kódovaniu skriptu (mohlo by to byť cp1251 alebo utf-8 alebo niečo iné). ak sa údaje z databázy získajú vo forme "zyuk", s najväčšou pravdepodobnosťou sa kódovanie spojenia líši od údajov uložených v databáze. Nasledujúci dotaz pomôže prekonať situáciu (okamžite po pripojení k databáze):

ak stránka používa Windows-1251, mali by ste ju špecifikovať - ​​cp1251.

vo všeobecnosti nie je nič ťažké. štandardné funkcie PHP nie sú určené na prácu s viacbytovými reťazcami. ale existujú štandardné knižnice, ktoré pomôžu napraviť situáciu: iconv a mbstring , pre regulárne výrazy je tiež potrebný prepínač, ktorý je aktivovaný modifikátorom u .

No, dáta z databázy sú získané, skripty sú napísané podľa všetkých pravidiel. Zostáva poslať správny názov a zobraziť kód stránky v prehliadači používateľa. posielame nadpis tak:

hlavička ('Content-Type: text / html; charset = utf-8');

ak sa použije jednobajtové kódovanie, hodnota znakovej sady bude odlišná - windows-1251 . Potom by nemali zostať problémy.

Niektoré najjednoduchšie príklady práce s utf-8 v php:

príklad 1: iconv, počet znakov na riadok

$ s = 'reťazec'; # string v utf-8 $ cnt1 = strlen ($ s); # bude obsahovať hodnotu $ 12 cnt2 = iconv_strlen ($ s, 'UTF-8'); # správna hodnota, 6

príklad 2: mbstring, počet znakov v reťazci

$ s = 'reťazec'; # string v utf-8 $ cnt1 = strlen ($ s); # bude obsahovať hodnotu $ 12 cnt2 = mb_strlen ($ s, 'UTF-8'); # správna hodnota, 6

príklad 3: regulárne výrazy, vyhľadávanie a nahrádzanie

$ s = 'String'; # riadok v utf-8 $ s = preg_replace ('/ p / i', 'd', $ s); # nahradenie sa nestane $ s = preg_replace ('/ p / iu', 'd', $ s); # výsledok slovo dock

modifikátor i predpisuje vyhľadávanie nerozlišujúce veľké a malé písmená a modifikátor u hovorí motoru s regulárnym výrazom, aby pracoval s reťazcami utf-8.

ak niekto povie, že php nemôže pracovať s utf-8, bude to nesprávne. Už niekoľko rokov robím všetky svoje projekty v tomto kódovaní a vôbec neboli žiadne problémy. Vyhľadávače samy o sebe už dávno používajú toto nádherné kódovanie.

Autori

offline 11 hodín

x64 (aka andi)

Komentáre: 2846 Publikácie: 395 Registrácia: 02-04-2009

Prečo sa tak stalo a ako ho prekonať?


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

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

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

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

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

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

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

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

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

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