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

C text converter


gitz

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

Δημοσ.

Γεια σας, θέλω να φτιάξω ένα πρόγραμμα, το οποίο να μετατρέπει ένα κείμενο απο iso8859-7 σε iso8859-1 (Ουσιαστικά, να μετατρέπει απο ελληνικά σε greeklish). Η ερώτηση μου δεν είναι το πως θα το υλοποιήσω, αλλά το πώς μπορώ να χρησιμοποιήσω τα iso8859-7 και iso8859-1 στο πρόγραμμα. Το πρόγραμμα θα υλοποιηθεί σε C.

Δημοσ.
Η ερώτηση μου δεν είναι το πως θα το υλοποιήσω, αλλά το πώς μπορώ να χρησιμοποιήσω τα iso8859-7 και iso8859-1 στο πρόγραμμα.

 

Αυστηρά μιλώντας, δε μπορείς. Οι κωδικοποιήσεις είναι θέμα interpretation, δηλαδή μίας σύμβασης που κάνουμε ως χρήστες ή προγραμματιστές με το σύστημα δύο φορές: Την πρώτη όταν δημιουργείται το κείμενο αυτό (όταν το γράφουμε δηλαδή) και τη δεύτερη όταν το διαβάζουμε μέσω ενός προγράμματος για να προβληθεί στην οθόνη μας. Εξετάζοντας byte προς byte ένα τέτοιο αρχείο, δε μπορείς να καταλάβεις αν είναι ISO-8859-1 ή ISO-8859-2 ή -7 κλπ., δεν υπάρχουν metadata στο αρχείο που να παρέχουν τη συγκεκριμένη πληροφορία. Γι' αυτό λέγονται και plain-text αυτά τα formats.

Δημοσ.

Σε ένα τόσο απλό πρόγραμμα όπως αυτό που περιέγραψε ο topic starter ότι θέλει να υλοποιήσει, δηλαδή έναν one-way transformer, τί ακριβώς απομένει να δώσει ως πληροφορία ο χρήστης (πέραν του input και output filename ίσως); Δεν φτάνει το γεγονός ότι ο χρήστης επέλεξε να χρησιμοποιήσει το πρόγραμμα, για να γίνουν αντιληπτές οι προθέσεις του; Δεν ξέρω αν γίνεται κατανοητό αυτό που θέλω να πω με αυτό το τελευταίο, είναι και λίγο self-evident εδώ που τα λέμε και αισθάνομαι ότι δε θα χρειαζόταν καν να το θίξω...

Δημοσ.

Ο χρήστης δίνει όντως για είσοδο μόνο το input και το output filename. Το ότι το κείμενο στο input file είναι σε iso8859-7 είναι δεδομένο. Απ' ότι έχω καταλάβει, το iso8859-7 είναι ένας πίνακας που περιέχει τους χαρακτήρες. Αυτό που ψάχνω είναι το πως μπορώ να βρω σε ποια θέση του πίνακα αυτού είναι ο κάθε χαρακτήρας του text για να μπορώ να κάνω την αντιστοίχηση με τους αγγλικούς χαρακτήρες...

Δημοσ.

Έφτιαξα ένα αρχείο σε ένα editor χρησιμοποιώντας iso-8859-7 με όλους τους

ελληνικούς χαρακτήρες, το οποίο το έδωσα είσοδο στο παρακάτω πρόγραμμα.

 

>
#include <stdio.h>

int main () {
unsigned char c = 0;
int i = 1;
FILE *f = fopen("Untitled.txt", "r");

while (!feof(f)) {
	c = fgetc(f);
	printf("%d. %c --> %d\n", i++, c, c);
}

fclose(f);

return 0;
}

 

Θα σου τυπώσει τον ASCII κωδικό για κάθε ελληνικό χαρακτήρα. Είναι πιθανό

να μην σου τυπώσει τους ελληνικούς χαρακτήρες αλλά δεν έχει σημασία. Αυτό

που έχει σημασία είναι οι αριθμοί που θα αντιστοιχίσει σε κάθε χαρακτήρα.

 

Διάβασε αν θέλεις εδώ γιατί έβαλα unsigned char, στην παράγραφο

'A Historical Perspective'. Αν δε βαριέσαι να διαβάσεις και το υπόλοιπο άρθρο

λέει για unicode.

 

Μετά είναι πολύ εύκολο να κάνεις όποια αντιστοιχία θέλεις σε iso-8859-1.

Δημοσ.
Αυτό που ψάχνω είναι το πως μπορώ να βρω σε ποια θέση του πίνακα αυτού είναι ο κάθε χαρακτήρας του text για να μπορώ να κάνω την αντιστοίχηση με τους αγγλικούς χαρακτήρες...

 

http://en.wikipedia.org/wiki/ISO/IEC_8859-7

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

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

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