Кирилица и енкодинг

Вероятно всеки уеб мастър в България, занимаващ се с изработка и поддръжка на уеб сайтове, който да не се е сблъсквал с проблеми свързани с енкодинга и кирилицата. Терминът "енкодинг", идващ от английското наименование encoding, представляват начина, по който се съхраняват символите във вид на някакъв цифров код. Пример, за често използван енкодинг са CP1251 и UTF-8. Най-честите изпитвани проблеми, се състоят от разлики между енкодингът на базата данни и файловете на нашият уеб сайт.

Препоръчваният енкдинг, който трябва да използвате при уеб сайтовете си както и при базите си данни е UTF-8. Това е нов стандарт, за разлика от CP1251, който вече не е актуален. Ако все пак Ви се случи, да преместите или изградите уеб сайт, на своя хостинг акаунт и виждате съдържанието си като ????? ?????????, то това е индикатор за разлика между енкодинга на файловете Ви и базата данни. Решението за поправяне на този проблем е конвертирането на базата Ви данни в съшия формат, както са и файловете Ви. В този случай, можете да постъпите по следните начини:

 

Използвайки програмата iconv. Тази програма е стандартна инсталация към всички Linux системи и може да се използва и чрез PHP. Един реален пример за конвертиране от CP1251 към UTF-8 чрез iconv е следния:

iconv -f WINDOWS-1251 -t UTF-8 database.sql > database-converted.sql.

 

Другото решение, е просто да свалите базата си данни на локалния компютър, и да я отворите в текстов редактор, който поддържа конвертиране в различен енкодинг (такъв например е Notepad++). След като отворите базата си данни с текстовия редактор, конвертирайте я в нужния формат, запазете промените и я импортирайте наново в хостинг акаунта си.

 

За да разберете в какъв енкодинг да конвертирате базата си данни, трябва да разберете и какъв енкодинг използва Вашата страница. Това може да се постигне по два начина. Единият начин, е просто да проверите изходния код на страницата Ви, като натиснете клавишната комбинация CTRL + U или от менюто View -> Page Source. Ето и един примерен изходен код и начина, по който е описан енкодинга:

 

Енкодинг

 

Възможно е да изпитвате затруднения с енкодинга на Вашият уеб сайт, ако при връзката, която се прави с базата данни е зададена с неправилен енкодинг. Това може да се поправи, като въведете следният код веднага след като се осъществи връзката с базата данни:

 

mysql_query("SET NAMES 'енкодинг' ");

 

Ако въпреки всички изпитвате проблеми с правилното изобразяване на съдържанието поради неправилно зададен енкодинг, можете да се свържете с нашата професионална техническа поддръжка. Помагали сме да доста наши клиенти за решаването именно на такива проблеми и със сигурност няма да откажем помощ и на Вас.

5.00 avg. rating (99% score) - 222 votes
  • Общо взето на всички етапи/части от софтуера енкодинга трябва да е един и същ:
    1) Файловете -> оправя се с текстов редактор
    2) БД -> енкодинга на цялата БД, таблицата и самите полетата. Решава се с промяна настройките на таблиците
    3) Самата връзка с БД -> ако връзката е настроена за друг енкодинг (mysql) ще се опитва да ползва него. Решава се със SET NAMES …
    4) Зададения енкодинг на HTML кода (Чрез HTTP хедъра content-type или съответния meta http еквивалент)

  • Изключително добра статия за хора, които в момента изучават уеб програмните езици и прочие. 🙂

  • Радваме се, че Ви е допаднала. Наистина проблема е доста често срещан и затова е хубаво да има написано решението му.
    Георги, благодаря за хубавия коментар и съм съгласен, но мисля, че има специализирани сайтове в областта, където ясно обясняват „защо“ нещо се случва.

  • Mundea

    Здравейте, извинявам се за въпрос, който може би не е по темата, но имам проблем с пдф файл, като копирам от него и като пейстна после текста изглежда така

    ê‡ÎÌÓ, ڇ͇‚‡ ÔÎ˙ÚÌÓÒÚ
    ÓÚ Ô˜ÂÎË Ìflχ ÔÓ˜ÚË ÌËÍ˙‰Â Ë Á‡ÚÓ‚‡ ‰Ó·Ë‚ËÚ ÓÚ Ì‡¯Ë-
    Ú „‡‰ËÌË Ë ‰‚ÓÓ‚Â ÏÌÓ„Ó ˜ÂÒÚÓ Ò‡ ÔÓ-ÌËÒÍË ÓÚ ‚˙ÁÏÓÊ-
    ÌÓÚÓ. ífl·‚‡ ‰‡ Ò ÁÌ‡Â Ó˘Â, ˜Â ‡‰ËÛÒ˙Ú Ì‡ ÔÓ‰ÛÍÚ˂̇-
    Ú‡ ‰ÂÈÌÓÒÚ Ì‡ Ô˜ÂÎËÚ Ì ̇‰ı‚˙Îfl 2 ÍÏ ÓÚ ÚӘ͇ڇ ̇
    Ô˜ÂÎË̇ (1250 ıÂÍÚ‡‡).

    Копирал съм от други пдф файлове и никога не съм имал проблем – явно има някакъв проблем в тоя конкретен файл, но не знам какъв е. Ако някой може да ми помогне – mundea@abv.bg ми е мейла. Ще съм благодарен на някъв съвет.

    • Валентин Джоров

      Здравейте,

      Този проблем може да бъде породен от факта, че PDF файла Ви използва набор от знаци (encoding), който е различен от този на редактора или програмата, в която копирате този текст. За съжаление няма как да Ви дадем инструкции как точно се поправя това, тъй като много зависи от това в какъв encoding е настроен PDF редактора и другата ви програма, в която копирате. Това, на което трябва да обърнете внимание да настроите тези два източника да бъдат с един и същ набор от знаци. По този начин при копиране от един в друг източник няма да имате подобни проблеми.

  • Mundea

    Здравейте, извинявам се за въпрос, който може би не е по темата, но
    имам проблем с пдф файл, като копирам от него и като пейстна после
    текста изглежда така

    ê‡ÎÌÓ, ڇ͇‚‡ ÔÎ˙ÚÌÓÒÚ

    ÓÚ Ô˜ÂÎË Ìflχ ÔÓ˜ÚË ÌËÍ˙‰Â Ë Á‡ÚÓ‚‡ ‰Ó·Ë‚ËÚ ÓÚ Ì‡¯Ë-

    Ú „‡‰ËÌË Ë ‰‚ÓÓ‚Â ÏÌÓ„Ó ˜ÂÒÚÓ Ò‡ ÔÓ-ÌËÒÍË ÓÚ ‚˙ÁÏÓÊ-

    ÌÓÚÓ. ífl·‚‡ ‰‡ Ò ÁÌ‡Â Ó˘Â, ˜Â ‡‰ËÛÒ˙Ú Ì‡ ÔÓ‰ÛÍÚ˂̇-

    Ú‡ ‰ÂÈÌÓÒÚ Ì‡ Ô˜ÂÎËÚ Ì ̇‰ı‚˙Îfl 2 ÍÏ ÓÚ ÚӘ͇ڇ ̇

    Ô˜ÂÎË̇ (1250 ıÂÍÚ‡‡).

    Копирал съм от други пдф файлове и никога не съм имал проблем – явно
    има някакъв проблем в тоя конкретен файл, но не знам какъв е. Ако някой
    може да ми помогне – mundea@abv.bg ми е мейла. Ще съм благодарен на
    някъв съвет.

  • Мартин Младенов

    Много полезна информация