Бенедикт Къмбърбач

Създадох много много прости уеб сайтове с чист HTML през годините. Изглежда, че повечето от тях работят добре през повечето време. Но има един повтарящ се проблем, който никога не съм разрешавал съвсем странно.

Сценарият протича по следния начин: аз създавам сайта. Гледам го в браузъра си, всичко изглежда добре. Може да го разгледам много пъти през следващите седмици или месеци, докато правя допълнения тук и там. Може би в различни браузъри на различни компютри. След това един ден поглеждам страницата и виждам произволно пръскане на бели въпросителни върху тъмни диамантени форми. Те може да се появят там, където очаквах да видя тирета, цитати или апострофи. Непосредствената ми мисъл е, че браузърът ми е влязъл в някакво странно състояние, защото гледах някакъв чужд уебсайт със странни знаци, но никога не съм съвсем сигурен. Оставам с това мъчително усещане, че може би половината планета вижда уебсайта ми със забавни въпросителни по него.

И така, въпросът ми е какво се случва? Какво трябва да направя, за да гарантирам, че възможно най-много хора по целия свят могат да разглеждат моя текст, както първоначално съм планирал? Трябва ли да използвам тези специални html последователности като

£ 

за всички буквено-цифрови знаци? Трябва ли изобщо да се притеснявам?

Редактиране: В момента имам проблема, възникващ на тази страница: http://www.fullreservebanking.com/papers.htm ... част от него изглежда така:

Използвам FireFox 5 и в момента кодирането на символи изглежда „UNICODE (UTF-8)“. Не помня ръчно да съм задавал кодирането на символи на каквото и да било след инсталирането. Понякога разглеждам японски уебсайтове по причини, свързани с работата - макар че когато го правя, не правя ръчно никакви промени в настройките на firefox.

Редактиране: Сега е фиксиран. Уеб страницата е променена съответно.

Те се наричат ​​gremlins и обикновено се причиняват, защото която и програма да постави кавичките, използва действителните красиви / къдрави / интелигентни кавички вместо правилните HTML обекти. Шрифтовете не се показват правилно или нямат тези знаци в тях и вместо това са създали забавния символ.

Вижте тази страхотна статия от A List Apart за нетипични типографски странности в HTML.

Най-доброто нещо, което трябва да направите, би било да създадете текстов процесор, който прехвърля съдържанието на вашата уеб страница, преди тя да бъде изпратена на потребителя (всъщност е най-добре да стартирате това, след като съдържанието е генерирано и преди да бъде запазено на сървъра). Този процесор ще направи проста замяна на текст за тези специални символи и ще осигури на мястото си подходящия HTML обект.

Тази страница от ръководството за PHP дава отлични примери за кодове в PHP.

  • Когато казвате „HTML обекти“, имате предвид онези последователности, започващи с амперсанд, или имате предвид обикновени стари ванилови ASCII символи? Кое трябва да използвам?
  • 1 HTML обектите са изразите, започващи с амперсанд. Напр. “Е HTML обект за отваряща двойна кавичка (Unicode знак 8220 в десетичен знак). Вижте страницата w3schools за HTML обекти - w3schools.com/html/html_entities.asp.
  • Добре, разбирам - трябва да използвам & #, последвано от число, а не & последвано от дума. Благодаря за вашата помощ.
  • Можете да използвате и двата метода еднакво добре. Например „е идентичен с & # 8220.
  • 1 @dmsnell: Според статията в отговора - методът "число" е по-надежден.

Отговорът на dmsnell относно използването на HTML обекти е добре, но този проблем обикновено може да бъде отстранен, като се уверите, че използвате правилния UTF-8 през цялото генериране на страници и обслужване на потребителите.

Например, ако данните ви се съхраняват в база данни, уверете се, че всички текстови полета използват кодиране UTF-8. Трябва също да зададете набора от знаци, когато се свързвате с базата данни (ако използвате PDO в PHP) или да изпълните заявка SET NAMES utf8 след свързване, преди да започнете да извличате данни.

PHP се справя добре с UTF-8, ако не модифицирате низове. Ако сте, ще трябва да разгледате използването на неговия многобайт mb_* функции.

На самата страница добавете мета тагова от типа съдържание. Трябва да тръгне веднага след отварянето <head> етикет.

<meta charset='utf-8'> 

Вместо това можете да зададете това като HTTP заглавка.

  • Всичко това звучи много добре, ако е уебсайт, генериран от база данни - но моят е чист HTML, създаден в текстов редактор.
  • 1 В този случай трябва първо да се уверите, че създавате съдържанието с правилното кодиране. Уверете се, че имате правилното кодиране във вашия текстов редактор - Notepad ++ е много добър в това.
  • Интересно ... Често използвам notepad ++ ... какво точно трябва да задам в него?
  • @Mick: OTOH има опции в менюто Редактиране като "Кодиране в UTF-8" и "Конвертиране в UTF-8". Ако вашите символи се представят като "gremlins" в NP ++, вероятно ще искате да изберете различна опция за кодиране, докато не се покажат. След като всичко изглежда добре в NP ++, вероятно ще искате да конвертирате в UTF-8.

С други думи, ако сте в WordPress и HTML5, копирайте само правилните кодирани utf-8 символи и проблемът е решен. Просто Google „utf-8 списък с символи“ и копирайте направо от браузъра си в редактора си (във визуален режим). Тогава въпросителният знак? няма да изглежда като

  • BTW те работят като SVG, така че могат да се мащабират безкрайно, без да се увеличава честотната лента. Страхотно за лога.

е работил за вас: Charles Robertson | Искате ли да се свържете с нас?