Я считаю, что ваша строка в кодировке UTF16 , поэтому каждый символ кодируется 16 битами или 2 байтами. PHP по-прежнему считает ее строкой ASCII, читает 1-й байт (2
), затем 2-й байт (нулевой символ) и останавливается на этом.
iconv('UTF-16', 'ASCII', $year)
должно помочь
EDIT Я догадался, что строка в UTF16, потому что ее символы, будучи ASCII, занимают 2 байта каждый. Ваша строка может быть в одной из азиатских двухбайтовых кодировок, но, скорее всего, это Unicode, и вы, скорее всего, в Windows, потому что UTF16 - внутренняя кодировка Windows.
Вот хорошая статья для начинающих по Unicode: http://www.joelonsoftware.com/articles/Unicode.html