![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 0 Dołączył: 7.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Zrobiłem sobie konwerter, mam 3 tablice utf8, latin1 i latin2
przykłady: utf8
latin1
no i latin2
Jam łatwo zauważyć są to wartości hexowe, tyle że w latin1 i utf8 są po dwie a w latin2 tylko jedna teraz otwieram sobie plik
a potem zamieniam zawartość na hexy
i podmieniam z latin2 na utf8
i zmaineiam na tekst
i potem zapisuje do pliku Ale właśnie pryz podmianie z latin2 na dowolne inne, dodaje dziwne znaki typu ]* i inne. Dzieje się tak przy dłuższych kawałkach tekstu np: Kod ąćęłńóśźż ĄĆĘŁŃÓŚŹŻ b1e6eab3f1f3b6bcbf0d0aa1c6caa3d1d3a6acaf c485c487c499c582c584c3b3c59bc5bc5b95bc0d0c5b9484c486c498c581c583c393c59ac5b 498f Ä�Ä�Ä�Ĺ�Ĺ�ĂłĹ�Ĺź[�ź [��Ä�Ä�Ĺ�Ĺ�Ă�Ĺ�ĹšI� powinno wyjść takie coś: Kod ąćęłńóśźş ĄĆĘĹ�ĹƒĂ“ĹšĹšĹť a wychodzi: Kod ąćęłńóśş[•ź [”„ĆĘĹ�ĹƒĂ“ĹšĹšI� I dzieje sie tak tlyko wtedy kiedy jest podmiana z tablicy latin2 na dowolną, i nie wiem czemu i jak temu zaradzić zeby podmieniało jednego hexa na dwa ? Dodam że pojedyncza podmiana też nic nie daje Kod $zm1 = preg_match($latin2[0], $utf8[0], $plik2);
$zm2 = preg_match($latin2[1], $utf8[1], $zm1); $zm3 = preg_match($latin2[2], $utf8[2], $zm2); $zm4 = preg_match($latin2[3], $utf8[3], $zm3); $zm5 = preg_match($latin2[4], $utf8[4], $zm4); $zm6 = preg_match($latin2[5], $utf8[5], $zm5); $zm7 = preg_match($latin2[6], $utf8[6], $zm6); $zm8 = preg_match($latin2[7], $utf8[7], $zm7); $zm9 = preg_match($latin2[8], $utf8[8], $zm8); $zm10 = preg_match($latin2[9], $utf8[9], $zm9); $zm11 = preg_match($latin2[10], $utf8[10], $zm10); $zm12 = preg_match($latin2[11], $utf8[11], $zm11); $zm13 = preg_match($latin2[12], $utf8[12], $zm12); $zm14 = preg_match($latin2[13], $utf8[13], $zm13); $zm15 = preg_match($latin2[14], $utf8[14], $zm14); $zm16 = preg_match($latin2[15], $utf8[15], $zm15); $zm17 = preg_match($latin2[16], $utf8[16], $zm16); $zm18 = preg_match($latin2[17], $utf8[17], $zm17); Ten post edytował tosiek 7.03.2009, 15:15:26 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 100 Pomógł: 11 Dołączył: 20.05.2007 Skąd: z fotela :) Ostrzeżenie: (0%) ![]() ![]() |
hmm, czy warto się tak przemęczać? sprawdź czy nie masz uruchomionej funkcji iconv w swoim PHP.
proponuje poczytać tutaj php.net/iconv o tym jakże potrzebnym/przydatnym narzędziu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) co do ogólnego problemu jaki ci występuje to niestety nie wiem skąd masz te znaczki, ale może przeróbka na iconv cię poratuje |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 0 Dołączył: 7.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
O iconv wiem.. ale... nie łyknie latin1.
Prym w tym problem że nie działa jedno z potrzebnych konwersji z latin2 na latin1. Bo z latin 2 na utf8 przerabiam za pomocą: [php$plik3 = mb_convert_encoding($plik, "utf-8", "iso-8859-2");[/php] W tym problem że w latin1 nie istnieją polskie znaki, a z reguły w tym kodowaniu są bazy, a żeby było trudniej to kopie baz są zapisane w utf8 z krzaczkami z latin1. Więc żaden konwerter tego nie łyknie. Tylko nie wiem czemu ale np. str replace w wersji sensitive daje jeszcze inne błędy, wiec coś jest z tą podmianą, bo pojedyncze znaki podmienia ok, ale gubi się przy ciągu do podmiany. I to tylko wtedy kiedy z jednego hexa ma zrobić dwa ;/ Ale znalazłem ciekawą opcję na około i bym musial dodatkowe tablice ;/ utf8-decode" title="Zobacz w manualu PHP" target="_manual Tylko nie wiem czemu tamto poprzednie nie działa, brakuje opcji żeby szukało tylko tych ciągów i nic więcej, bo dziwnie jakby fixuje przy podobnych hexach hmm np: z bc, bf, a1, af na c5ba, c5bc, c484, c5bb daje efekt c5b, 5bc, 0c5b9484, 498f To pogrubione jest na końcu, reszta to jest to w pierwszej lini obok siebie Ten post edytował tosiek 8.03.2009, 09:25:38 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 07:55 |