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

dažādi php kodējumi

  1. Izdevējs
  2. x64 (aka andi)

iesācēju skriptu rakstnieki neinteresē tādas lietas kā kodēšana

iesācēju skriptu rakstnieki neinteresē tādas lietas kā kodēšana. Tāpēc vietnēs dažreiz var atrast briesmīgu haoss, kad datu bāzē iegūtie dati tiek iegūti vienā kodējumā, lapa tiek veidota citā, un serverim tiek dots trešais. rezultātā, ja lapa var tikt atšifrēta, tad vismaz 2 reizes. Tātad, kāpēc šāda problēma notiek un kā to pārvarēt?

Krievijas segmentā visbiežāk var atrast tā sauktos logus. to sauc citādi: logus-1251, cp1251 vai pat ANO. nākamais ir utf-8. Varat arī atrast nosaukumu unicode, taču tas nav pilnīgi pareizs, jo Unicode ir visas grupas vispārējais nosaukums (utf-8, utf-16, utf-32). un ļoti populāra retums ir koi8-r vai vienkārši koi-8 - vienreiz populārs Linux kodējums. Protams, Krievijas segmentā ir iespējams tikties ar kaut ko citu, taču tas drīzāk ir autora „indulgence”.

Galvenā atšķirība starp utf-8 un citiem (galvenokārt windows-1251 un koi8-r) ir pēdējais viena baits, un maksimālais rakstzīmju skaits, ko var attēlot, izmantojot šos kodējumus, ir ierobežots līdz 256. Pats par sevi saprotams, ka šī teksta pilnīgai prezentācijai var nebūt pietiekami. un html tika atrasts risinājums - tā saukto mnemoniku izmantošana. piemēram:

© - & copy;

Papildus tam, ka katru šādu rakstzīmi raksturo rakstzīmju grupa, kods kļūst nesalasāms un darbs ar tekstu kļūst sarežģītāks. tas ir, ja multibitu utf-8 nonāk glābšanā. vienā tekstā ir ļoti ērti izmantot dažādu alfabēta burtu un dažādu simbolu burtu.

Tādējādi ērtākais sākotnējo nosacījumu kopums ir šāds: datubāzes, php skriptu un html pages / js skriptu kodēšanai jābūt vienādam. Protams, jūs varat izmantot dažādus, bet šajā gadījumā pastāv risks sajaukt. tas nav svarīgi, kuru kodu lapu izmanto. ja vietne ir tikai krievvalodīgajai auditorijai, logi-1251 būs pietiekami. pretējā gadījumā lofiskā izvēle būtu utf-8. pirmā iespēja ir vairāk vai mazāk skaidra. multibyte kodējumam būs nepieciešami daži žesti.

Strādājot ar utf-8, standarta notepad notepad nedarbosies ! Fakts ir tāds, ka šis redaktors, saglabājot failu šajā kodējumā, pievieno parakstu sākumam - 3 rakstzīmes, tā saukto bom (baitu secības atzīmi), ko var izmantot, lai noteiktu kodējumu, atverot failu. labāk izvēlēties citu redaktoru: notepad2 vai notepad ++ . iestatījumos ir jāizvēlas, lai saglabātu bez paraksta.

Nākamais svarīgais solis ir darbs ar datu bāzi. Ir ļoti vēlams, lai bāzes / tabulas / teksta lauka kodējums atbilstu kodējumam (tas varētu būt cp1251 vai utf-8 vai kaut kas cits). ja datu bāzes dati tiek iegūti "zyuk" veidā, visticamāk, savienojuma kodējums atšķiras no datu bāzē saglabātajiem datiem. Nākamais vaicājums palīdzēs pārvarēt situāciju (izpildīt tūlīt pēc savienojuma ar datu bāzi):

ja vietne izmanto Windows-1251, jums tas jānorāda - cp1251.

kopumā nav grūti. tikai standarta php funkcijas nav paredzētas darbam ar multibitu virknēm. bet ir standarta bibliotēkas, kas palīdzēs novērst situāciju: iconv un mbstring . regulārām izteiksmēm ir arī nepieciešams slēdzis, kas tiek aktivizēts ar modifikatoru u .

Dati no datu bāzes tiek iegūti, skripti ir rakstīti saskaņā ar visiem noteikumiem. Joprojām ir jānosūta pareizais nosaukums un lietotāja pārlūkprogrammā jāparāda lapas kods. mēs sūtām pozīciju tā:

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

ja tiek izmantots viena baita kodējums, vērtējuma vērtība būs atšķirīga - logi-1251 . Pēc tam problēmas nedrīkst palikt.

Daži vienkāršākie piemēri darbam ar utf-8 php:

1. piemērs: ikona, simbolu skaits rindā

$ s = 'virkne'; # virkne utf-8 $ cnt1 = strlen ($ s); # satur vērtību $ 12 cnt2 = iconv_strlen ($ s, 'UTF-8'); # pareiza vērtība, 6

2. piemērs: mbstring, rakstzīmju skaits virknē

$ s = 'virkne'; # virkne utf-8 $ cnt1 = strlen ($ s); # satur vērtību $ 12 cnt2 = mb_strlen ($ s, 'UTF-8'); # pareiza vērtība, 6

3. piemērs: regulāras izteiksmes, meklēšana un aizstāšana

$ s = 'String'; # rinda utf-8 $ s = preg_replace ('/ p / i', 'd', $ s); # aizstāšana nenotiks $ s = preg_replace ('/ p / iu', 'd', $ s); # rezultāts vārds doks

i modifikators nosaka gadījumu nejūtīgu meklēšanu, un u modifikators regulārajai izteiksmes dzinējam liek strādāt ar utf-8 virknēm.

ja kāds saka, ka php nevar strādāt ar utf-8, tas būs nepareizi. Jau vairākus gadus esmu veicis visus savus projektus šajā kodējumā, un nekādas problēmas vispār nebija. Meklētājprogrammas pašas jau ilgu laiku izmanto šo brīnišķīgo kodējumu.

Izdevējs

bezsaistē 11 stundas

x64 (aka andi)

Komentāri: 2846 Publikācijas: 395 Reģistrācija: 02-04-2009

Tātad, kāpēc šāda problēma notiek un kā to pārvarēt?
Провайдеры:
  • 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 Гбит / сек... 
    Читать полностью