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

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

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

0

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

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