Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kodowanie pliku i zmiana z Unix na Windows
Forum PHP.pl > Forum > PHP
IceManSpy
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.
wNogachSpisz
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.
IceManSpy
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.
wNogachSpisz
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.
IceManSpy
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.
wNogachSpisz
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?
IceManSpy
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.