PHP utf8 intval - PullRequest
       17

PHP utf8 intval

2 голосов
/ 18 февраля 2012

Я читаю файл UTF8 и сохраняю данные, прочитанные из файла, в массиве. Однако при использовании этих данных в запросах mysql у меня возникают проблемы. Я думал, что я преобразую все значения int явно, используя intval (..), прежде чем их использовать. Но intval (utf8string) дает мне ноль.

Следующий код дает неожиданный вывод:

 //.....
 var_dump($data[10]);
 echo '|' . $data[10] . "|\n";  
 echo '|' . bin2hex($data[10]) . "|\n";
 echo '|' . utf8_decode($data[10]) . "|\n";
 echo '|' . intval(utf8_decode($data[10])) . "|\n";
 echo '|' . intval($data[10]). "|\n"; exit
 //.....

Выход:

string(15) "2240000"
|2240000|
|003200320034003000300030003000|
|2240000|
|0|
|0|

Есть идеи, как получить правильный intval из таких данных?

1 Ответ

1 голос
/ 18 февраля 2012

Похоже, ваша строка закодирована в UTF-16 , а не в UTF-8.

Либо измените что-либо о том, откуда вы получаете данные, либо преобразуйте кодировку:

$data[10] = iconv('UTF-16', 'UTF-8', $data[10])
...