utf16 - utf8, wyszukiwanie w tekście dwubajotowych znaków

Odpowiedz Nowy wątek
alois
2012-06-26 15:07
alois
0

Witam,

Podczas odczytywania zawartości pliku pdf mam problem z polskimi znakami.
Dodam, że każdy znak jest poprzedzony liczbą 0, lub 1, to może sugerować kodowanie UTF-16, ale nie udało mi się tego prze konwertować na utf-8 za pomocą "php'owych" funkcji - dlaczego ?

Napisałem jednak funkcję, która takiej konwersji dokonuje:

function utf16_to_utf8( $_text )
    {
        $text = iconv("cp1250","utf-8", $_text);
        $trans = array(
            "\x01\x04"  => 'Ą',     "\x01\x05"  => 'ą',
            "\x01\x06"  => 'Ć',     "\x01\x07"  => 'ć',
            "\x01\x18"  => 'Ę',     "\x01\x19"  => 'ę',
            "\x01\x41"  => 'Ł',     "\x01\x42"  => 'ł',
            "\x01\x43"  => 'Ń',     "\x01\x44"  => 'ń',
            "\x00\xd3"  => 'Ó',     "\x00\xf3"  => 'ó',
            "\x01\x5a"  => 'Ś',     "\x01\x5b"  => 'ś',
            "\x01\x79"  => 'Ź',     "\x01\x7a"  => 'ź',
            "\x01\x7b"  => 'Ż',     "\x01\x7c"  => 'ż'
        );
        return strtr($text, $trans);
    }

nazwa funkcji jest trochę myląca, bo wcale nie zamienia ona utf16 na utf8, ponieważ po jej działania co prawda wyświetlają się poprawnie polskie znaki, ale nadal każdy znak jest dwubajtowy - zamienia tylko niepoprawnie wyświetlające się znaki na ich polskie diakrytyczne odpowiedniki.

Teraz mój problem: chciałbym w takim tekście (już przetworzonym powyższą funkcją) znaleźć jakiś inny tekst, jednak funkcja strpos, oraz mb_strpos zwracają zawsze false, czy spowodowane jest to faktem ze każdy znak jest dwubajtowy?

Przy zastosowaniu funkcji mb_convert_encoding z kodowania utf-16 na utf-8 pojawiają się krzaki... Jak sobie z tym poradzić ?

pzdr Alois

Pozostało 580 znaków

2012-06-26 18:57

Rejestracja: 7 lat temu

Ostatnio: 7 lat temu

0

Kiedyś robiłem projekt właśnie z odczytem plików pdf i bardzo dobrze nadaje się do tego funkcja pdftotext jest ona domyślnie zainstalowana na większości serwerów. Funkcja ta naprawdę fajnie zamienia .pdf na .txt i nie musisz się martwić o wersję pdf'a ponieważ w moim przypadku jak próbowałem to zrobić PHP to za każdym razem musiałem coś zmieniać. A dalszych modyfikacji z tekstem robisz już na pliku .txt

Pozostało 580 znaków

2012-06-26 21:14

Rejestracja: 9 lat temu

Ostatnio: 4 lata temu

0

utf ma dwa warianty - Big-endian "UTF-16BE" i little-endian "UTF-16LE"
próbowałeś obu?


Pół giga extra na dropboxie? Pół giga extra na dropboxie! Tyle wygrać! >>Klik here<<

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0