Какво кодиране е по-добре да се направи един сайт

За мен отговорът е очевиден: необходимостта да се използва UTF-8.

Първоначално програмисти от целия кодиран текст, не мисли за това, че има и други езици с техните символи в света. Когато цифровия свят обединени интернет, е необходимо да се покаже на буквите и страниците, така че те могат да се четат или пишат на всеки компютър в света. Така се появи кодовата страница или кодиране. Както мета-информация са приложени към всеки текст, казвайки браузър или приложение поща как да декодира байта до знака. Не е изненадващо, това често се забравя да се уточни кодиране или наред с него. Програми трябваше да се научи да я идентифицира автоматично, че не винаги е възможно. Тя се превърна в повече от ясно, че светът се нуждае от цифров есперанто. Ако ролята на обикновен език есперанто стисна епична недостатъчност, на информация, която тя технологията се превърна в панацея. Просто му се обади Unicode.

Най-обещаващ вариант на Unicode UTF-8 е станала. Той obratnosovmestim с асците кодирани. Тя не се счупи, ако низът е установено неправилно характер и има динамичен характер размер код от един до шест байта.

Има някои неща, които трябва да запомните, когато се работи с Unicode. Винаги давайте кодиране от сървъра към HTTP -zagolovkah и да го посочите в мета таговете.

В допълнение htmlek, трябва да се уверите, че файловете yavasksiptami и стилове, също е правилно кодиране. Пример Htaccess файл за Apache:

Ако пишете на Ruby, не забравяйте да поставите в началото на файла

Най-големи проблеми с обработката на UTF-8 в PCP. На първо място. Трябва да използваме MB-аналози на функциите на низ, като например: mb_substr. вместо SUBSTR. За този модул mbstring трябва да бъде заредена в РСР на изпълнение. Може дори само да го настроите да работи с желания кодиране: Втори. има някои проблеми, свързани с не-латински символи в регулярните изрази. Например, дори когато сте задали модификатора ф, българските букви не са включени в \ У. Ето защо те трябва да посочват ясно [A-Ha -yaOo] (ж буквен код не отива зад ия в таблицата, така че тя се добавя отделно).

Код, намирането на всички думи в един ред и ги поставя в променливата $ мачове

Правилно kolleyshn ни позволява да се разгледа писмо г. Е и всички останали, които ги харесват, еднакви символи. Това означава, че търсенето на пълен текст ще даде същите резултати за заявка "дървото" и "дървото".

Веднъж имах задача да конвертирате всички tracklists албуми CDDB файла в UTF-8. 99,9% от файловете, кодиращи правилно идентифицирани chardet.

Предлагам реномирани съветници, които да споделят и други нюанси на работа с UTF-8.

Това е съвет за развитие на уеб сайтове. Искате ли да научите всичко за интелигентен vorstke, редовен скрипт, елегантното, трикове и технологии на работа с дизайнер? Изпрати въпроси.

За автоматични функции за претоварване работят с низове в PHP може да се зададе опция mbstring.func_overload 2 или повече. Така че много по-лесно да се живее.

В същата статия се уточнява, което определя кодиране използва от браузъра, за предаване на данни.

Моето усещане е, че хората често не се прави разлика между понятията "набор от знаци" и "кодиране", но напразно. В повечето характер определя разлика, може би, е малка, но когато се занимават с Unicode, трябва ясно да се разбере какво е това. Особено боли от този рейк се учат на езика Python.

В набора знаци (набор от символи) - е набор от икони, символи, като всеки символ се определя номер.

Кодиране (кодиране) - е начин да се представи (т.е. кодирани ..), последователността на символи в последователност от байтове.

Да разгледаме няколко примера.

А сега да разгледаме Windows-1251. Този формат ви позволява да представи героите от набор от Windows-1251 под формата на последователност от байтове. Encoding е подредена много разумна - ние приемаме характер, вземете номера му, си запишете номера в един байт! 256 знака, номера им от 0 до 255, така че точно байта форма! Ура!

ASCII кодова таблица съдържа общо 128 символа. ASCII кодиране също е ясна - да се предприемат и пишат-байт номер характер. Между другото, се оказва, че не всяка последователност от байтове може да се разглежда като текст, кодирани в ASCII: байта със стойности, по-големи от 127 не-ASCII символи, които не са кодирани.

Поради факта, че тези знаци кодировки са записали само номерата им от снимачната площадка, разликата между тези понятия е доста неясно. Unicode не е така в случая, тази разлика е значителна.

Unicode - набор от символи (цифри), които се опитват да се съберат всички азбуки и дори повече.

Кодирания за този набор дойдоха много. USC-2 кодиране. например, разположени приблизително толкова Windows-1251. вземете броя на знаците, и ще го напиша като два байта. Уви, два байта могат да бъдат написани само стойности от 0 до 65 535, което е, USC-2 ви позволява да се кодира само част от героите Unicode, а дори и след това доста неизгодно начин: всеки символ, дори и латински, са кодирани от два байта.

UTF-8, кодираща сложни. Първите 128 Unicode символи съответстват на ASCII символи. Тези UTF-8 символа са кодирани като един байт, откъдето идва и обратната съвместимост, ако използваме само част от героите, няма разлика в начина, по който кодира: последователност от байтове, получени с помощта на UTF-8 и ASCII е същото. Това означава, че ако вземете текст ASCII кодиран и го декодира с помощта UTF-8. в крайна сметка ще се получи един и същ текст. Какво UTF-8 прави с останалата част от символите, числата са повече от 128 Unicode - това е друга тема завладяваща.

За съжаление, тези понятия са объркани понякога дори и в стандартите: елемент атрибут «набор от знаци» посочено точно кодиране (кодиране).

На първо място. проблеми с UTF-8 в РСР е много по-дълбоки. Един mb_string единичната им няма да се излекува в всеки един момент. Така например, той не се дава нищо в случай на сортиране (подредени, ksort и други)
или чрез използване на функциите на файловата система (напр dirname), освен това, дори и припокриващи се, не всички низови функции (например - strrev). Така, че заместването на mb_string на функции модул не пречи на проблемите, а напротив, това им носи - трябва да се има предвид какви функции са включени и кои не са.

На второ място. от гледна точка на регулярни изрази. От незапомнени времена в PTSRE имат проекти за работа с Unicode. Например, \ PL - всички букви. Използвайте ги, много по-добре, отколкото [A-Ha -yaOo]. В допълнение, новите версии са се появили PTSRE "глаголи» (глаголи), един от тях - «(* НТП)» позволява да включите \ w, както и други комбинации от националните символи.

Има и друг вариант: да се използват не PTSRE в редовния сезон, и също mb_string, тя включва библиотека от "Oniguruma", най-използваните регулярен (поради факта, че техният език много малко хора наистина знаят) силата си е достатъчно, и работа с UTF-8 е по-бързо, отколкото PTSRE.

Никой не споменава т. Н. UTF-8 BOM (английски Byte Поръчка Марк. - Байт цел марка), която носи неговото "чар" при изпълнение на кода си.

Тези, които работят с PHP, вероятно знаете, че наличието на BOM във файла не позволява да изпращате заглавията, освен ако изрично не се даде възможност на буфериране от ob_start (). Също така, ако zainklyudit файл между съществуващата HTML-кода. на BOM се запознаем на място inklyuda, дори и ако файлът е празен.

Много езици на ниво система (за разлика от PHP) отрязани етикета, позволявайки по този начин да забравите за проблемите.

Всеки PHP-разработчик трябва да е в лоното на такава функция, ексцизия маркер за началото на файла

функция removeBOM ($ ул), ако (SUBSTR ($ ул, 0, 3) == пакет ( «CCC», 0xEF, 0xBB, 0xBF)) $ ул = SUBSTR ($ ул, 3);
>


Между другото, валидатора на W3C ще ви посъветва да го премахнете, ако отговаря на validiruemom файл.

Развиващите се уеб интерфейси 69

наскоро се появиха

Най Novodmitrovskaya улица, 36, сграда 2
София, България, 127 015