xarda Δημοσ. 14 Φεβρουαρίου 2011 Δημοσ. 14 Φεβρουαρίου 2011 Υπάρχει κάποιο προγραμμα που μετατρεπει την κωδικοποιηση χαρατκηρων των ονομωτων αρχειων σε αλλη κωδικοποιηση ? Δηλαδη απο windows-1253 να γινουν utf-8.Η αν υπάρχει κώδικας που κάνει αυτη τη δουλεια σε php ?
parsifal Δημοσ. 14 Φεβρουαρίου 2011 Δημοσ. 14 Φεβρουαρίου 2011 Κανονικά, δε θα έπρεπε να έχεις ανάγκη για κάτι τέτοιο. Τα νεότερα συστήματα αρχείων των Windows (FAT32 και NTFS) χρησιμοποιούν UTF-16 κωδικοποίηση για τα filenames. Μπορείς να εξηγήσεις λίγο καλύτερα τις περιστάσεις που σε ώθησαν στην ερώτηση;
xarda Δημοσ. 14 Φεβρουαρίου 2011 Μέλος Δημοσ. 14 Φεβρουαρίου 2011 Κανονικά, δε θα έπρεπε να έχεις ανάγκη για κάτι τέτοιο. Τα νεότερα συστήματα αρχείων των Windows (FAT32 και NTFS) χρησιμοποιούν UTF-16 κωδικοποίηση για τα filenames. Μπορείς να εξηγήσεις λίγο καλύτερα τις περιστάσεις που σε ώθησαν στην ερώτηση; Ναι βεβαιως.Εσυ πιστευω τα ξερεις γιατι παρακολουθω και την πορεια σου στα περιοδικα με τα προγραμματακια που φτιαχνεις! Λοιπον. 1) Κανω parse μια .html σελιδα με κωδικοποιηση Ελληνική( windows-1253 ) 2) Ενα πεδίο της σελιδας αυτης περιεχει ονοματα μαθηματων 3) Δημιουργω με την fopen αρχεια .html και δινω ως ονομα αρχείου το πεδιο που περιεχει τα ονοματα των μαθηματων ενα ενα.( δηλαδη φτιαχνω δεκαδες αρχεια με for loop ) 4) Τα αρχεία αυτα τα βλεπω στο Cpanel μου που εχει κωδικοποιηση UTF-8 κανονικα και ομορφα. 5) Οταν ομως μπαινω στον ftp του φορουμ μου και θελω να βαλω τα αρχεια αυτα μου εμφανιζει τα ονοματα των αρχειων με κινεζικα γραμματα και για τον λογο αυτο δεν μπορουν να ανεβουν,μαλιστα μου εμφανιζει και το παρακατω μηνυμα λαθους >You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 0, '', '', 1, '','','',0)' at line 2 Αρχείο: /home/teikozan/public_html/meeting/Sources/TPdlmanager.php Γραμμή: 1770 Σημειωσεις: Σε περιπτωση που τα ονοματα των αρχειων ειναι με αγγλικους χαρακτηρες δεν υπάρχει κανενα προβλημα πουθενα και τα αρχεια ανεβαινουν κανονικα στον ftp του φορουμ.Ετσι χρησιμοποιω την παρακατω συναρτηση αλλα ακομα και μετα απο αυτην μου τα εμφανιζει κινεζικα. > function greeklish($lessonName) { // Converts any greek text to greeklish (greek text in latin character set) $greek = array('α','ά','Ά','Α','β','Β','γ','Γ','δ','Δ','ε','έ','Ε','Έ','ζ','Ζ','η','ή','Η','θ','Θ', 'ι','ί','ϊ','ΐ','Ι','Ί','κ','Κ','λ','Λ','μ','Μ','ν','Ν','ξ','Ξ','ο','ό','Ο','Ό','π','Π','ρ','Ρ','σ', 'ς','Σ','τ','Τ','υ','ύ','Υ','Ύ','φ','Φ','χ','Χ','ψ','Ψ','ω','ώ','Ω','Ώ'); $english = array('a', 'a','A','A','b','B','g','G','d','D','e','e','E','E','z','Z','i','i','I','th','Th', 'i','i','i','i','I','I','k','K','l','L','m','M','n','N','x','X','o','o','O','O','p','P' ,'r','R','s', 's','S','t','T','u','u','Y','Y','f','F','x','X','ps','Ps','o','o','O','O'); $string = str_replace( $greek,$english, $lessonName); return $string; } Αφου δεν λειτουργησε και αυτο βρηκα την παρακατω συναρτηση για μετατροπη της κωδικοποιησης $lessonName = mb_convert_encoding($lessonName,"UTF8" ,"windows-1253"); και του λεω ουσιαστικα να μετατρεψει το ονομα του αρχειου απο windows-1253 σε utf-8 που υποστηριζει ο ftp του φορουμ αλλα και το cpanel.Το περιεργο εδω ειναι οτι χρησιμοποιωντας την συναρτηση αυτη στο cpanel (utf-8) εμφανιζονται κανονικα τα ονοματα των αρχειων ενω στον ftp του φορουμ εμφανιζονται κινεζικα.... αυτο ειναι το προβλημα...
parsifal Δημοσ. 14 Φεβρουαρίου 2011 Δημοσ. 14 Φεβρουαρίου 2011 xarda, το μετέφερα σε αυτήν την ενότητα, γιατί είναι προφανές ότι δε ζητάς κάποιο πρόγραμμα για Windows (η ενότητα Software είναι για Windows εφαρμογές όπως σημειώνεται στην περιγραφή της, γι' αυτό παρασύρθηκα αρχικά και έκανα λόγο για NTFS και FAT32), αλλά μία καθολική λύση στον server σου και στην PHP που χρησιμοποιείς. Για το πρόβλημα καθεαυτό, θα επανέλθω λίγο αργότερα, αν στο μεταξύ δεν προσφέρουν βοήθεια άλλα μέλη.
@sterios Δημοσ. 14 Φεβρουαρίου 2011 Δημοσ. 14 Φεβρουαρίου 2011 Είχα κάποιο παρόμοιο θέμα στο παρελθόν, το οποίο το έλυσα όταν άλλαξα το encoding των χαρακτήρων από ansi σε utf8. Λοιπόν εξηγούμαι για το πως το έκανα, καθώς είναι αρκετά απλό και μου είχε σπάσει τα νευρά. Από το notepad++ πατάς στο μενού encodind->convert to utf-8 και είσαι έτοιμος. Απλά πρέπει να το κάνεις σε όλα τα php αρχεία που έχεις ελληνικά γραμμένα. Προφανώς και με άλλο πρόγραμμα μπορείς να αλλάξεις το encoding φαντάζομαι.
parsifal Δημοσ. 14 Φεβρουαρίου 2011 Δημοσ. 14 Φεβρουαρίου 2011 Λοιπον. 1) Κανω parse μια .html σελιδα με κωδικοποιηση Ελληνική( windows-1253 ) Στοπ! Εδώ είναι το πρόβλημά σου. Από αυτό το σημείο και μετά, στο PHP script σου θα πρέπει να μετατρέπεις τα πάντα σε UTF-8 και όλα θα πρέπει να κυλήσουν ομαλά (υποθέτοντας πάντα ότι στο παρακάτω επίπεδο, δηλαδή το filesystem στο οποίο γράφεις αρχεία με την PHP, υποστηρίζεται UTF-8 encoding για τα filenames). Αναφέρεις πολύ σωστά στο τέλος του μηνύματός σου ότι προσπαθείς να μετατρέψεις τα strings που αποσπάς από την .html σελίδα σε UTF-8, με τη βοήθεια της mb_convert_encoding. Αν διαβάσεις προσεκτικά όμως τις υποστηριζόμενες κωδικοποιήσεις του mbstring module, θα δεις ότι δεν περιλαμβάνεται η WINDOWS-1253! Μπορείς να χρησιμοποιήσεις την ISO-8859-7 κωδικοποίηση ως input encoding, αλλά θα έχεις πρόβλημα με το τονούμενο κεφαλαίο άλφα "Ά" (ίσως και με κάποιους άλλους χαρακτήρες που δεν έχουν την ίδια θέση στις δύο κωδικοσελίδες). Δοκίμασε καλύτερα με την iconv, απ' όσο θυμάμαι υποστηρίζει απευθείας και την WINDOWS-1253. Ναι βεβαιως.Εσυ πιστευω τα ξερεις γιατι παρακολουθω και την πορεια σου στα περιοδικα με τα προγραμματακια που φτιαχνεις! Σίγουρα δε με μπερδεύεις με κάποιον άλλον; Ένα πρόγραμμά μου έχω δώσει δημόσια όλο κι όλο και απ' όσο ξέρω, δεν έχει φιλοξενηθεί σε κάποιο περιοδικό...
xarda Δημοσ. 15 Φεβρουαρίου 2011 Μέλος Δημοσ. 15 Φεβρουαρίου 2011 Το καταφερα pαrsifal με την Iconv και ολα οκ! Τωρα κατι αλλο.Θελω να τα αποθηκευω σε ενα αλλο φακελο με την fwrite στον ftp.Σαν path τι πρεπει να βαλω ? > $mypath = "[b]ftp[/b]://www.mysite.gr/public_html/site/tp-downloads/"; $filenameFor_Tmhma = $mypath.$filenameFor_Tmhma; $file = fopen( $filenameFor_Tmhma , 'a+') or die("can't open file"); Η > $mypath = "[b]http[/b]://www.mysite.gr/public_html/site/tp-downloads/"; $filenameFor_Tmhma = $mypath.$filenameFor_Tmhma; $file = fopen( $filenameFor_Tmhma , 'a+') or die("can't open file");
parsifal Δημοσ. 15 Φεβρουαρίου 2011 Δημοσ. 15 Φεβρουαρίου 2011 Κανένα από τα δύο. Οι συναρτήσεις χειρισμού αρχείων της PHP δεν αποκτούν file handles over HTTP ή over FTP, αλλά με κλήσεις συστήματος, χρησιμοποιώντας το filesystem API του υποκείμενου λειτουργικού συστήματος. Πρέπει να χρησιμοποιήσεις paths, absolute ή relative, που να έχουν νόημα στο πλαίσιο του τοπικού συστήματος αρχείων του λειτουργικού που τρέχει ο server σου. Καλύτερα relative, για να μη μπλέκεις με τις ιδιαιτερότητες του λειτουργικού του server. Π.χ.: αν το root directory του site σου είναι το site, το PHP script σου βρίσκεται επίσης σε αυτό το directory και θέλεις να ανοίξεις αρχείο στο subdirectory site/tp-downloads, η mypath μεταβλητή αρκεί να έχει τιμή "tp-downloads/" ή "./tp-downloads/". Αν το PHP script βρίσκεται π.χ. στο site/scripts και θέλεις να ανοίξεις αρχείο πάλι στο site/tp-downloads, η mypath αρκεί να έχει τιμή "../tp-downloads/".
xarda Δημοσ. 15 Φεβρουαρίου 2011 Μέλος Δημοσ. 15 Φεβρουαρίου 2011 Βασικά μηπως δεν χρειαζεται να εμπλακω σε κατι τετοιο ? Θελω να πω δηλαδη οτι το προγραμματακι που εφτιαξα οταν τρεχει δημιουργει τα αρχεια στον ιδιο φακελο.Εγω απλα θέλω να εμφανιζονται σε ενα αλλο φακελο και τιποτα αλλο. ("Ξεχασα να σου πω:μια μερα πηγα για καφε σε ενα μαγαζι και ξεφυλιζα ενα περιοδικο που δεν θυμαμαι το ονομα του.Εκει ειδα πως εγραφε για τον parsifal οτι δηλαδη ειχες φτιαξει ενα προγραμμα,περισσοτερα δεν θυμαμαι δυστηχως")
mindtrapper Δημοσ. 15 Φεβρουαρίου 2011 Δημοσ. 15 Φεβρουαρίου 2011 Αν και στην κατηγορία που είναι το θέμα τώρα μάλλον είμαι off-topic ρωτάω anyway. Έχω αρχεία και folders από ένα σύστημα Macos στα ελληνικά και όταν τα βάζω σε windows 7 φαίνονται ότι να ναι. Θέμα encoding δεν είναι αυτό; Υπάρχει τρόπος να το αλλάξω και να φαίνονται κανονικά πάλι; Δεν έχω πρόσβαση στα original αρχεία από το macos, μου τα είχε δώσει κάποιος (αρχεία powerpoint και word είναι). ΥΓ. Αν βρω Mac και τα μεταφέρω θα φαίνονται κανονικά;
parsifal Δημοσ. 15 Φεβρουαρίου 2011 Δημοσ. 15 Φεβρουαρίου 2011 Βασικά μηπως δεν χρειαζεται να εμπλακω σε κατι τετοιο ? Θελω να πω δηλαδη οτι το προγραμματακι που εφτιαξα οταν τρεχει δημιουργει τα αρχεια στον ιδιο φακελο.Εγω απλα θέλω να εμφανιζονται σε ενα αλλο φακελο και τιποτα αλλο. Από τη στιγμή που θέλεις μέσω PHP να διαβάζεις από ή να γράφεις σε αρχεία στο δίσκο του server σου, δε βλέπω τρόπο να μην εμπλακείς σε κάτι τέτοιο. Πρέπει να ορίσεις τη διαδρομή του αρχείου που θα ανοιχτεί. @mindtrapper: Είσαι όντως offtopic, ρώτησέ το στο Mac subforum.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.