Чтобы добавить к сказанному Гуффой:
Когда у вас чередуются нулевые байты, почти наверняка произошло то, что вы прочитали источник данных UTF-16, не преобразовав его в ASCII-совместимую кодировку, такую как UTF-8. Хотя вы можете выбросить нули, это приведет к искажению строки, если она содержит символы вне диапазона ASCII. (Конечно, это не проблема для строк дат, но это может повлиять на любые другие строки, которые вы читаете из того же источника.)
Проверьте, откуда ваш PHP-код читает строку 2010-10-01
, и либо конвертируйте ее на лету, используя, например, iconv('utf-16le', 'utf-8', $string)
, либо измените источник, чтобы использовать более разумную кодировку. Например, если это текстовый файл, сохраните его в текстовом редакторе, используя «UTF-8 без BOM», а не «Unicode», что является вводящим в заблуждение названием, которое текстовые редакторы Windows используют для обозначения UTF-16LE.