2014-11-14 2 views
0

Мой текстовый файл содержит следующую строку: «ãéðä». Мой PHP партия преобразовать эту строку выглядит следующим образом:php, iconv() function error message

<?php 
$text = iconv("UTF-8","ISO-8859-1", "ãéðä"); 
echo $text; 
?> 

Когда я запускаю код, который я получаю преобразованный текст я хочу. В случае, у меня есть более одной такой строки, я использую следующий код:

<?php 
$myFile = 'test.txt'; 
$myHandle = fopen($myFile,'r'); 
$myText = fread($myHandle, filesize($myFile)); 
$ridComma = explode(',',$myText); 
foreach($ridComma as $item) 
{ 
$text = iconv("UTF-8","ISO-8859-1", $item); 
} 
fclose($myHandle); 
?> 

На этот раз я получаю следующее сообщение об ошибке:

Notice: iconv(): Detected an illegal character in input string in C:\xampp\htdocs\test\test.php on line 8 

С одной и той же функцией преобразования я получаю преобразование в одна партия и ошибка в другом! Может ли кто-нибудь объяснить мне, почему? Спасибо!

+1

Вы уверены, что файл 'test.txt' был сохранен с кодировкой ISO-8859-1? – Dai

+0

В коде отсутствуют ошибки. У вас неправильный ввод в файл. Используйте ответ от Artjoman – newman

ответ

1

Вы можете использовать

$ текст = Iconv ('ISO-8859-1', 'UTF-8 // IGNORE', $ пункт);

Он будет игнорировать незаконные символы и удалять их.

+0

Спасибо, на этот раз выход eas: 'ÿþãéðä; – deotpit

+0

@ Дай, я сохранил как «ansi», затем «UTF-8», затем «unicode», затем «unicode big endian». Я не получал ошибок, но результат оставался неровным. – deotpit

+1

Существует еще одна опция - использовать функцию 'mb_convert_encoding' ' $ utf_8 = mb_convert_encoding ($ text, "UTF-8", "windows-1251"); 'Если у вас установлено расширение' mb_string' – Artjoman