• Главная
  • Карта сайта
Не найдено

različite php kodiranja

  1. autori
  2. x64 (zv. andi)

pisci skripti novaka ne mare za takvo nešto kao kodiranje

pisci skripti novaka ne mare za takvo nešto kao kodiranje. Dakle, na stranicama ponekad možete naći strašan nered, kada se podaci iz baze podataka dobiju u jednom kodiranju, stranica se formira u drugoj, a poslužitelj dobiva treći. kao rezultat, ako se stranica može dešifrirati, tada barem 2 puta. Dakle, zašto se takav problem događa i kako ga prevladati?

u ruskom segmentu najčešće možete pronaći tzv. kodiranje prozora. nazovite ga drugačije: windows-1251, cp1251 ili čak ansi. sljedeći je utf-8. Također možete pronaći ime unicode, ali to nije posve točno, jer je Unicode opći naziv za cijelu grupu (utf-8, utf-16, utf-32). i vrlo popularna rijetkost je koi8-r ili jednostavno koi-8 - nekada popularno Linux kodiranje. Naravno, moguće je susresti još nešto u ruskom segmentu, ali to je radije "popustljivost" autora.

Glavna razlika između utf-8 i drugih (prvenstveno Windows-1251 i Koi8-R) je posljednji bajt, a maksimalni broj znakova koji se mogu prikazati pomoću tih kodiranja ograničen je na 256. Naravno, za cjelovit tekst možda neće biti dovoljno. i za html je pronađeno rješenje - korištenje tzv. mnemotehnike. na primjer:

© - & copy;

Uz činjenicu da je svaki takav karakter opisan skupinom znakova, kôd postaje nečitljiv i rad s tekstom postaje sve složeniji. ovdje spašava multibyte utf-8. vrlo je pogodno koristiti slova različitih pisama i različite simbole u jednom tekstu.

Dakle, najudobniji skup početnih uvjeta je sljedeći: kodiranje baze podataka, php skripte i html stranice / js skripte bi trebalo biti isto. Naravno, možete koristiti različite, ali u ovom slučaju postoji rizik od zbunjenosti. nije važno koja se kodna stranica koristi. ako je stranica namijenjena samo publici koja govori ruski, Windows-1251 će biti sasvim dovoljan. inače, utf-8 bi bio logičan izbor. prva je opcija više ili manje jasna. višekratno kodiranje zahtijevat će neke geste.

Kada radite s utf-8, standardni notepad notepad neće raditi ! Činjenica je da ovaj urednik, prilikom spremanja datoteke u ovom kodiranju, dodaje potpis na početak - 3 znaka, tzv. Bom (oznaka reda bajtova), koji se može koristiti za određivanje kodiranja pri otvaranju datoteke. bolje je odabrati drugi urednik: notepad2 ili notepad ++ , u postavkama koje morate spremiti bez potpisa.

Sljedeći važan korak je rad s bazom podataka. Vrlo je poželjno da se kodiranje baze / tablice / teksta podudara s kodiranjem skripte (to može biti cp1251 ili utf-8, ili nešto drugo). ako su podaci iz baze podataka dobiveni u obliku "zyuk", najvjerojatnije je kodiranje veza različita od podataka pohranjenih u bazi podataka. Sljedeći upit pomoći će prevladavanju situacije (izvršiti odmah nakon povezivanja s bazom podataka):

ako stranica koristi Windows-1251, trebate ga navesti - cp1251.

općenito, ne postoji ništa teško. samo, standardne php funkcije nisu dizajnirane za rad s višekratnim nizovima. ali postoje standardne knjižnice koje će pomoći u ispravljanju situacije: iconv i mbstring , za regularne izraze postoji i nužan prekidač koji se aktivira modifikatorom u .

Dobiveni su podaci iz baze podataka, skripte su napisane prema svim pravilima. Ostaje poslati ispravan naslov i prikazati kôd stranice u korisnikovom pregledniku. šaljemo naslov tako da:

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

ako se koristi jednobajtno kodiranje, vrijednost za skup znakova bit će različita - windows-1251 . Nakon toga problemi ne bi trebali ostati.

Neki najjednostavniji primjeri rada s utf-8 u php-u:

primjer 1: iconv, broj znakova po retku

$ s = 'string'; # string u utf-8 $ cnt1 = strlen ($ s); # će sadržavati vrijednost $ 12 cnt2 = iconv_strlen ($ s, 'UTF-8'); # ispravna vrijednost, 6

primjer 2: mbstring, broj znakova u nizu

$ s = 'string'; # string u utf-8 $ cnt1 = strlen ($ s); # će sadržavati vrijednost $ 12 cnt2 = mb_strlen ($ s, 'UTF-8'); # ispravna vrijednost, 6

primjer 3: regularni izrazi, pretraživanje i zamjena

$ s = 'String'; # redak u utf-8 $ s = preg_replace ('/ p / i', 'd', $ s); # zamjena se neće dogoditi $ s = preg_replace ('/ p / iu', 'd', $ s); # rezultat riječ dock

modifikator i propisuje pretragu koja nije osjetljiva na veličinu slova, a modifikator u govori mehanizmu regularnog izraza da radi s nizovima utf-8.

ako netko kaže da php ne može raditi s utf-8, to će biti pogrešno. Već nekoliko godina radim sve svoje projekte u ovom kodiranju i uopće nema problema. Sami pretraživači već dugo koriste ovo predivno kodiranje.

autori

izvan mreže 11 sati

x64 (zv. andi)

Komentari: 2846 Publikacije: 395 Registracija: 02-04-2009

Dakle, zašto se takav problem događa i kako ga prevladati?
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью