2014-09-29 7 views
6

Witam Widziałem to pytanie zadane wokół pułapek, ale jak dotąd żaden z przykładów, które widziałem, nie pomógł mi, kiedy próbowałem ich. Otrzymuję błąd "iconv(): Wykryto niekompletny znak wielobajtowy w ciągu wejściowym", na niektórych wejściach. Podczas korzystania z następujących funkcji razem. Czy masz jakieś pomysły, aby uzyskać ten komunikat o błędzie, aby odejść. Próbuję przekonwertować wejściowy ciąg z mieszanym kodowaniem do UTF8.iconv(): Wykryto niekompletny znak wielobajtowy w łańcuchu wejściowym

function ConvertToUTF8($text){ 
     return iconv(mb_detect_encoding($text, mb_detect_order(), false), "UTF-8//IGNORE", $text); 
    } 

EDIT: Witam wszystkich po niektórzy patrząc wokół następujących pracował dla nas:

function ConvertToUTF8($text){ 

    $encoding = mb_detect_encoding($text, mb_detect_order(), false); 

    if($encoding == "UTF-8") 
    { 
     $text = mb_convert_encoding($text, 'UTF-8', 'UTF-8');  
    } 


    $out = iconv(mb_detect_encoding($text, mb_detect_order(), false), "UTF-8//IGNORE", $text); 


    return $out; 
} 

Możesz być w stanie go poprawić, ale to naprawić nasz błąd.

+0

http://stackoverflow.com/questions/4794647/php-dealing-special-characters-with-iconv http://stackoverflow.com/questions/9631299/removing-invalid-incomplete-multibyte-characters – Cheery

+0

gdzie jest ciąg próbny? – Ghost

Odpowiedz

4

OK, więc tutaj jest to, co działało dla nas.

function ConvertToUTF8($text){ 

    $encoding = mb_detect_encoding($text, mb_detect_order(), false); 

    if($encoding == "UTF-8") 
    { 
     $text = mb_convert_encoding($text, 'UTF-8', 'UTF-8');  
    } 


    $out = iconv(mb_detect_encoding($text, mb_detect_order(), false), "UTF-8//IGNORE", $text); 


    return $out; 
} 
0

Problem w funkcji zwrotu wartości funkcji mb_detect_encoding przez tę funkcję to tablica. użyj go osobno.

+0

Witam zgodnie z podręcznikiem PHP powinien zwrócić ciąg znaków, która część zwraca tablicę? string mb_detect_encoding (string $ str [, mixed $ encoding_list = mb_detect_order() [, bool $ strict = false]]) – GodLovesYou

+0

zwraca FALSE, jeśli kodowanie nie może zostać wykryte z podanego ciągu. Sprawdź, co zwraca. –