![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 263 Pomógł: 0 Dołączył: 13.07.2003 Skąd: wawa Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Walczę z tym już dobre pare godzin (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Zastrzele się jak rozwiązanie się okaże bajecznie proste (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Otóż mamy sobie plik PHP który łączy się po ODBC do Access'a i ciągnie sobie dane. Problem jest z kodowaniem znaków: 1. rekordy mają różne kodowanie - raz ASCII raz UTF-8, 2. iconv mimo iż bym chciał - nie działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Poniżej kod (troche już zamotany (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) )
Nie będę tłumaczył do czegoż ma to służyć bo historia jest tak długa że hej a baza jest w takim stanie, że szok (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Temu kto rozwiąze problem stawiam browarów 5 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) pzdr, patS Ten post edytował patrycjusz 6.07.2007, 13:02:57 |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
To zamiast od razu komplikowac kod zrob prosty odczyt z bazy i operacje wykrywania kodowania na 1 polu a nastepnie konwersje bo patrzac na kod nie wiadomo czy blad jest po stronie funkcji konwersji czy w kodzie.
Bazka jakie ma domyslne kodowanie ustawione? Bo mozliwe jest ze zrobil jakas glupia konwersje, z krora iconv nie potrafi sobie poradzic. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 263 Pomógł: 0 Dołączył: 13.07.2003 Skąd: wawa Ostrzeżenie: (0%) ![]() ![]() |
no właśnie ten drugi wariant mi się wydaje najbardziej prawdopodobny (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Bo kod ten już był prosty do bólu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ta wersja jest ostatnią, co prawda najbardziej skomplikowaną - ale obrazuje miejsce do którego zabrnąłem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Problem też polega na tym, że mam tylko plik .mdb który otwieram OpenOfficofskim Base i OO widzi wszystko ok, PHP niestety dostaje na przemian ASCII z UTF-8. Pare pytań: 1. Może jakiś program co wychwyci niuanse (kodowanie itp) w tej bazie? 2. Możliwe jest aby w accessie różne rekordy miały różne kodowanie? 3. Może jakiś zupełnie inny soft co sobie z tym poradzi (Java, C# znam jako tako) - potrzebuje wycisnąć z tej bazy CSV-kę. patS |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Jesli to jest operacja cykliczna to bedzie problem jesli jednorazowa to Access podejrzewam ze ma export do csv, oprocz tego jest wiele narzedzi ktore zrzuca albo konwertuje do innego formatu bazy danych np EMS (http://www.sqlmanager.net/)
Troche jest dziwne ze zwraca Ci kodowanie UTF-8 a powinno raczej cos windowsowego. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 263 Pomógł: 0 Dołączył: 13.07.2003 Skąd: wawa Ostrzeżenie: (0%) ![]() ![]() |
Walcze, walcze,
ostatni kod:
a teraz skrawek z wywołania z lini poleceń tego skryptu PHP
Ha! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) poprostu boskie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) a tak poważnie, próbowałem już i windows-1250 i cp1250 Mam wrażenie, że iconv coś nie do końca to łapie. Sam plik jest w utf-8. pzdr, patS Dobra Panowie, czuje, że jestem blisko, stawka wzrasta do 7 piw (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Do odbioru na żoliborzu albo na polach mokotowskich (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Patrzcie, jak zacząłem printować poszczególne wartości i ich kodowanie to jest prawidłowość: 1. Tam gdzie są polskie fonty - jest utf-8 2. Tam gdzie nie ma polskich fontów - jest ASCII pzdr, patS |
|
|
![]()
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Czyli problem moze byc samego sterownika odbc jesli masz krzaczki to konwertuje na utf-8 z tego co pamietam polskie krzaczki maja o 1 bajt wiecej, jesli nie masz krzakow to zostaje to dalej na 2 bajtach wiec moze wypluwac jako ascii. To takie moje przemyslenia. Mozesz szukac w czym jest problem mozliwe ze pdo ma jakiegos buga w tym.
A co do Twojego problemu to pewnie regexp bys zalatwil (A-z) z tego co pamietam nie lapie krzakow wiec wtedy wiesz co jest ok |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%) ![]() ![]() |
Wypluwa wszystko jako UTF-8. Po prostu jeśli w tekście nie masz żadnego znaku wielobajtowego, to mb_detect_encoding" title="Zobacz w manualu PHP" target="_manual rozpozna to jako ASCII. Odpal ten kod:
i powiedz na co zamienione zostały polskie znaki. Są trzy możliwości: 1. Na jeden pytajnik 2. Na jeden krzaczek, np: ± 3. Na dwa krzaczki/pytajniki, np: Ĺş, albo Ä� |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 263 Pomógł: 0 Dołączył: 13.07.2003 Skąd: wawa Ostrzeżenie: (0%) ![]() ![]() |
@kicok wypluwa � (jeden pytajnik)
Dobra pare pytań (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) 1. Idąc dalej tym tropem, a jeżeli mb_detect_encoding nic nie zwraca? 2. Czym się różnią te 3 pozycje @kicok które wymieniłeś? 3. Co oznacza wzięcie zmiennej w stringu w {} ? Dobra będe kombinował, dzięki pzdr, patS P.S. Ale podpowiedzi piszczcie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) @kicok co z tym jednym pytajnikiem? Co to oznacza? P.S. 2. Jakiś kurcze dobry manual o kodowaniach znaków - linki wklejajcie. Do Moderatora: Może jakiś topic przyklejony na temat kodowania znaków warto by zrobić? Dobra, hmm faktycznie, jest tak, że jak nie ma polskiego krzaczka to zwraca ASCII które nie ma jak skonwertować na UTF-8 (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif) (iconv nie działa) jeżeli jest zaś polski krzaczek to zwraca utf-8 ale z znakiem � Koncepcje? patS Dobra mam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) genialny artykuł warto poczytać, szczególnie trzeba zwrócić uwagę na to iż iconv czy mb_convert ... nie operują na windowsowym kodowaniu. Odkryłem to przez przypadek, kod powyżej, uruchomiłem pod FF i przełączyłem z poziomu FF na windows-1250 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Troche lameriada wyszła (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Może zmęcznie materiału ... (czyt. mnie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) Tak czy owak, browar dla sonq i kicoka (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) pzdr, patS P.S. Kurcze bym zapomniał, użyłem funkcji pl_win2utf8 z przykładu pod podanym wyżej adresem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował patrycjusz 6.07.2007, 13:02:31 |
|
|
![]()
Post
#9
|
|
Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Cytat Tak czy owak, browar dla sonq i kicoka A tak sie sklada ze nie daleko mieszkam (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 07:19 |