Как узнать, что строка - в UTF-8 кодировке?

  • Автор темы Balancer
  • Дата начала

Balancer

Guest
Как узнать, что строка - в UTF-8 кодировке?

Есть MySQL-база, которая в своё время не шибко корректно была законвертирована из cp1251/MySQL-4.0.x в UTF-8/MySQL-4.1.x

Выражается это в том, что часть данных в UTF-8 таблице осталась в 1251-й кодировке. Всё бы ничего, но если эти данные потом вставлять в другие таблицы, то MySQL 4.1.3beta виснет (как и предыдущие 4.1.x).

Решение очевидное - пройти PHP-скриптом по всем записям, найти те из них, кто некорректен в UTF-8 и конвертнуть их из 1251 в UTF-8.

Вот только беда одна - непонятно, как определить, что строка именно в cp1251, а не в UTF-8.

Есть мысли? :)
 

Profic

just Profic (PHP5 BetaTeam)
Имхо это гиморное занятие :)
Идея такая: iconv-ом ковертить строку из utf8 в cp1251. Если ошибка - cp1251, если нет - utf8

-~{}~ 04.07.04 19:04:

lucas
Есть мнение, что не поможет. Вернее может принять utf за cp1251
 

Balancer

Guest
Угу, именно так.
Пока поступил совсем тупо - если есть символы из диапазона 0xF0-0xFF - это 1251. Нет - UTF-8. Учитывая, что виндовых сообщений не много, если чего-то и будет пропущено - не так страшно.

Главное, MySQL не повиснет на создании FULLTEXT-индекса, а то любит он это дело, если ему при клиенте в UTF-8 подсунуть строку из 1251. Видимо, как раз из-за этой группы символов, отсутствующих в UTF-8.
 
Сверху