Як швидко визначити кодування текстового рядка

Виникла проблема: як швидко визначити кодування текстового рядка щодо UTF-8 Все частіше доводиться працювати з рядками в кодуванні UNICODE.

Нижче представлена ​​функція перевірки, чи потрібно перетворення кодування UNICODE (UTF-8) в кодування WINDOWS (win-1251)

Функція дає досить точну відповідь, хоча побудована не на по-кодовому перетворенні символів.

Коротко - опис функції detect_my_utf ().
  • перетворимо (рядок в спеціальний формат)
  • обчислюємо довжину входить рядки
  • наводимо всі букви рядка в заголовні
  • прибираємо специфічні коди .0 і .1
  • обчислюємо довжину нового рядка
  • отримуємо співвідношення тарою рядки до нової

Якщо це співвідношення 1 або близько до нього, то є підозра, що входить рядок не кодувалася в UNICODE. Якщо це співвідношення знаходиться в діапазоні від 1,2 до 2,2 - то можна сміливо перекодувати рядок в WINDOWS кодування win-1251.

На виході функції маємо 0 або 1, відповідно, не UNICODE або UNICODE.

Приклади виконання функції:

Приклад 4 Даний алгоритм добре справляється з різноманітними входять рядками в складі сервісу статистики переходів з пошукових машин.

PHP - це мова програмування, заснований на використанні скриптів. Дана мова широко застосовується для створення різних front-end і back-end веб-додатків. Підтримується по-замовчуванню більшістю хостерів, будучи одним з лідерів серед мов програмування, призначених для створення динамічних інтерактивних сайтів.