Προς το περιεχόμενο

Πρόγραμμα για μετατροπή κωδικοποίησης ονομάτων αρχείων;


xarda

Προτεινόμενες αναρτήσεις

Δημοσ.

Υπάρχει κάποιο προγραμμα που μετατρεπει την κωδικοποιηση χαρατκηρων των ονομωτων αρχειων σε αλλη κωδικοποιηση ?

Δηλαδη απο windows-1253 να γινουν utf-8.Η αν υπάρχει κώδικας που κάνει αυτη τη δουλεια σε php ?

Δημοσ.

Κανονικά, δε θα έπρεπε να έχεις ανάγκη για κάτι τέτοιο. Τα νεότερα συστήματα αρχείων των Windows (FAT32 και NTFS) χρησιμοποιούν UTF-16 κωδικοποίηση για τα filenames. Μπορείς να εξηγήσεις λίγο καλύτερα τις περιστάσεις που σε ώθησαν στην ερώτηση;

Δημοσ.

Κανονικά, δε θα έπρεπε να έχεις ανάγκη για κάτι τέτοιο. Τα νεότερα συστήματα αρχείων των Windows (FAT32 και NTFS) χρησιμοποιούν UTF-16 κωδικοποίηση για τα filenames. Μπορείς να εξηγήσεις λίγο καλύτερα τις περιστάσεις που σε ώθησαν στην ερώτηση;

 

Ναι βεβαιως.Εσυ πιστευω τα ξερεις γιατι παρακολουθω και την πορεια σου στα περιοδικα με τα προγραμματακια που φτιαχνεις! :-D

 

 

Λοιπον.

 

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 του φορουμ εμφανιζονται κινεζικα....

 

αυτο ειναι το προβλημα...

Δημοσ.

xarda, το μετέφερα σε αυτήν την ενότητα, γιατί είναι προφανές ότι δε ζητάς κάποιο πρόγραμμα για Windows (η ενότητα Software είναι για Windows εφαρμογές όπως σημειώνεται στην περιγραφή της, γι' αυτό παρασύρθηκα αρχικά και έκανα λόγο για NTFS και FAT32), αλλά μία καθολική λύση στον server σου και στην PHP που χρησιμοποιείς. Για το πρόβλημα καθεαυτό, θα επανέλθω λίγο αργότερα, αν στο μεταξύ δεν προσφέρουν βοήθεια άλλα μέλη.

Δημοσ.

Είχα κάποιο παρόμοιο θέμα στο παρελθόν, το οποίο το έλυσα όταν άλλαξα το encoding των χαρακτήρων από ansi σε utf8. Λοιπόν εξηγούμαι για το πως το έκανα, καθώς είναι αρκετά απλό και μου είχε σπάσει τα νευρά. Από το notepad++ πατάς στο μενού encodind->convert to utf-8 και είσαι έτοιμος. Απλά πρέπει να το κάνεις σε όλα τα php αρχεία που έχεις ελληνικά γραμμένα. Προφανώς και με άλλο πρόγραμμα μπορείς να αλλάξεις το encoding φαντάζομαι.

Δημοσ.

Λοιπον.

 

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.

 

 

 

Ναι βεβαιως.Εσυ πιστευω τα ξερεις γιατι παρακολουθω και την πορεια σου στα περιοδικα με τα προγραμματακια που φτιαχνεις! :-D

Σίγουρα δε με μπερδεύεις με κάποιον άλλον; Ένα πρόγραμμά μου έχω δώσει δημόσια όλο κι όλο και απ' όσο ξέρω, δεν έχει φιλοξενηθεί σε κάποιο περιοδικό...

Δημοσ.

Το καταφερα 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");	

Δημοσ.

Κανένα από τα δύο. Οι συναρτήσεις χειρισμού αρχείων της 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/".

Δημοσ.

Βασικά μηπως δεν χρειαζεται να εμπλακω σε κατι τετοιο ?

 

Θελω να πω δηλαδη οτι το προγραμματακι που εφτιαξα οταν τρεχει δημιουργει τα αρχεια στον ιδιο φακελο.Εγω απλα θέλω να εμφανιζονται σε ενα αλλο φακελο και τιποτα αλλο.

 

("Ξεχασα να σου πω:μια μερα πηγα για καφε σε ενα μαγαζι και ξεφυλιζα ενα περιοδικο που δεν θυμαμαι το ονομα του.Εκει ειδα πως εγραφε για τον parsifal οτι δηλαδη ειχες φτιαξει ενα προγραμμα,περισσοτερα δεν θυμαμαι δυστηχως")

Δημοσ.

Αν και στην κατηγορία που είναι το θέμα τώρα μάλλον είμαι off-topic ρωτάω anyway.

 

Έχω αρχεία και folders από ένα σύστημα Macos στα ελληνικά και όταν τα βάζω σε windows 7 φαίνονται ότι να ναι. Θέμα encoding δεν είναι αυτό; Υπάρχει τρόπος να το αλλάξω και να φαίνονται κανονικά πάλι; Δεν έχω πρόσβαση στα original αρχεία από το macos, μου τα είχε δώσει κάποιος (αρχεία powerpoint και word είναι).

 

ΥΓ. Αν βρω Mac και τα μεταφέρω θα φαίνονται κανονικά;

Δημοσ.

Βασικά μηπως δεν χρειαζεται να εμπλακω σε κατι τετοιο ?

 

Θελω να πω δηλαδη οτι το προγραμματακι που εφτιαξα οταν τρεχει δημιουργει τα αρχεια στον ιδιο φακελο.Εγω απλα θέλω να εμφανιζονται σε ενα αλλο φακελο και τιποτα αλλο.

Από τη στιγμή που θέλεις μέσω PHP να διαβάζεις από ή να γράφεις σε αρχεία στο δίσκο του server σου, δε βλέπω τρόπο να μην εμπλακείς σε κάτι τέτοιο. Πρέπει να ορίσεις τη διαδρομή του αρχείου που θα ανοιχτεί.

 

 

@mindtrapper: Είσαι όντως offtopic, ρώτησέ το στο Mac subforum.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...