Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kodowanie pliku i zmiana z Unix na Windows
IceManSpy
post 27.11.2011, 16:34:17
Post #1





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Witam

Meczę się nad skryptem do zrzucania bazy. Wszystko pięknie jest zapisywane, problem powstaje tylko podczas wrzucania wynikowego skryptu. Polskie znaki zostają zamienione na znaki zapytania, a w pliku wynikowym ze skryptu są normalnie zapisane.

Jak wrzucę wynikowy plik do Notepad++ to na dole pokazuje mi się kodowanie ANSI as UTF-8 (takie ma być) ale także UNIX, a powinno Dos/Windows.

Jak można przerobić ten plik, aby miał ten parametr UNIX na Dos\Windows.

Zauważyłem, że w niektórych miejscach (insertach) jest np taki zapis: Treść\r\nDalsza treść. Domyślam się, że może to być błąd. Szukając rozwiązania zastosowałem coś takiego:
  1. $file = file_get_contents("file.php");
  2. $file = str_replace("\\r", "", $file);
  3. file_put_contents("file.php", $file);

Niestety dalej źle wrzuca. Porównując to co ja otrzymałem, a to co wypluwa mi np Navicat Lite to tam gdzie są z Navi \r\n to też w moim są. Więc szukam pomocy... sad.gif

Na początku skryptu do zrzucania bazy mam:
  1. mysql_query("SET CHARSET utf8");
  2. mysql_query("SET NAMES 'utf8' COLLATE 'utf8_bin'");



Teraz zobaczyłem, że mój plik z klasą też jest UNIX z kodowaniem ANSI as UTF-8 , a plik z przykładem jest ANSI, ale już z Dos\Windows , może w tym siedzi problem? Wszystkie są w kodowaniu ANSI as UTF-8, więc nie tutaj jest problem.

Ten post edytował IceManSpy 27.11.2011, 16:44:18


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
wNogachSpisz
post 27.11.2011, 16:38:10
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Swego czasu poświęciłem kilka tygodni na znalezienie skryptu do backupu mysql.
Przewaliłem wszystko co było dostępne w sieci.
Testowałem przy pomocy bazy z czystego formum phpbb z jednym tylko postem zawierającym troche polskich znaków.
Wynik:
Żaden skrypt nie ptorafi stworzyć backupu, który będzie działał po przywróceniu (nie tylko ze względu na kodowanie).
Wyjątkiem jest phpMyAdmin.

Ten post edytował wNogachSpisz 27.11.2011, 16:41:14
Go to the top of the page
+Quote Post
IceManSpy
post 27.11.2011, 16:45:31
Post #3





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Ten skrypt robi to całkiem nie źle:
http://www.phpclasses.org/package/3498-PHP...ackup-file.html
Brakuje mu jedynie kluczy obcych, które już sam dopisałem. Jednak aby wypuścić to do obiegu potrzebuje sprawdzić, czy dobrze działa na mojej bazie. A problemem jest zaimportowanie tego pliku.


--------------------
Go to the top of the page
+Quote Post
wNogachSpisz
post 27.11.2011, 16:50:34
Post #4





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Cytat(IceManSpy @ 27.11.2011, 16:45:31 ) *
Ten skrypt robi to całkiem nie źle:
[url="http://www.phpclasses.org/package/3498-PHP-Dump-a-MySQL-database-in-a-backup-

Próbowałem, ten skrypt robi to całkiem źle.
Baza po przywrócenu nie działa.
Go to the top of the page
+Quote Post
IceManSpy
post 27.11.2011, 16:55:23
Post #5





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Po czym stwierdzasz, że nie działa? Jeśli miałeś ustawione na InnoDB to prawda nie działa. Dlaczego? Bo nie zapisuje połączeń między tabelami. Dlatego jak go rozbudowałem o właśnie klucze obce.

Problem rozwiązałem, kodowanie bazy było ustawione na utf8_bin, zmieniłem na utf8_general_ci, takie również wywołuje w skrypcie i śmiga jak należy. Jak uporządkuje kod, to się nim podzielę do testów i krytyki.

Ten post edytował IceManSpy 27.11.2011, 16:58:35


--------------------
Go to the top of the page
+Quote Post
wNogachSpisz
post 27.11.2011, 17:04:06
Post #6





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Cytat(IceManSpy @ 27.11.2011, 16:55:23 ) *
Po czym stwierdzasz, że nie działa? Jeśli miałeś ustawione na InnoDB to prawda nie działa. Dlaczego? Bo nie zapisuje połączeń między tabelami. Dlatego jak go rozbudowałem o właśnie klucze obce.

Zadnych kombinacji, jest phpmyadmin, jego moduł backupu ma kilka tysięcy linii, co rusz wychodzą nowe wersje, po cholere wynajdywać koło na nowo?

Ten post edytował wNogachSpisz 27.11.2011, 17:04:26
Go to the top of the page
+Quote Post
IceManSpy
post 27.11.2011, 17:24:05
Post #7





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


A jeśli ktoś nie ma phpMyAdmin? Nie musisz mieć phpMyAdmin, aby używać MySQL.
Z resztą skrypt już napisałem. Kto będzie chciał, ten go użyje.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 16:29