Δημοσιεύτηκε: 18 Νοέμ 2010, 19:15
από nikosokin
Γεια σας.

Διαβάζοντας το link "Δομές δεδομένων" του Swaroop έφτιαξα το ακόλουθο script
------------------------------------------------
#!/usr/bin/python
#-*- coding: utf-8 -*-

n="νικος"
print n[1]
------------------------------------------------

και το αποθήκευσα σαν test.py
Το έκανα εκτελέσιμο ( chmod +x test.py)
και όταν το έτρεξα δεν μου έβγαλε το επιθυμητό αποτέλεσμα. Δηλαδή το γράμμα ι

Όταν το άλλαξα και το έκανα ως εξής:
------------------------------------------------
#!/usr/bin/python
#-*- coding: utf-8 -*-

n="νικος"
mikos = len(n)
print mikos
------------------------------------------------

Αντί να μου βγάλει 5 μου έβγαλε 10.

Αυτό σημαίνει ότι η κωδικοποίηση utf-8 τον κάθε ελληνικό χαρακτήρα τον αντιστοιχεί για 16bits και όχι 8 όπως το iso8859-7

Το ίδιο script με τη γραμμή #-*- coding: iso8859-7 -*-
μου έδωσε το επιθυμητό αποτέλεσμα, δηλαδή 5.

Ο λόγος σας λέω αυτά είναι διότι δουλεύω πάνω σε μία εφαρμογή στην οποία έχω βάλει τη γραμμή #-*- coding: iso8859-7 -*-
αλλά για κάποιο λόγο δεν μου εμφανίζει πάνω στα κουμπιά και γενικώς στο παράθυρο της εφαρμογής τους χαρακτήρες.
Η εφαρμογή ξεκινάει έτσι:

----------------------------------------------------------------------
#-*- coding: iso8859-7 -*-
try :
import gtk
import gobject
except:
raise SystemExit
import pygtk
if gtk.pygtk_version<(2.0):
print "pygtk 2.0 or later require for this widget"
raise SystemExit
import pango
import random
import time
from os import open
from datetime import date
from sugar.activity import activity

class....bla bla bla...
----------------------------------------------------------

Εκτιμώ πως το κλειδί της απάντησης σε αυτή τη περίπτωση βρίσκεται στις βιβλιοθήκες gtk και pygtk
οι οποίες για κάποιο λόγο δεν αναγνωρίζουν την κωδικοποίηση iso8859-7

Ερώτηση:
Στέκει λογικά η εκτίμηση που έχω κάνει για το λόγο που δεν δουλεύει στην εφαρμογή μου το iso8859-7 ;
Αν όχι, τι πιστεύετε πως φταίει ;
Αν ναι, υπάρχει κάποια πιθανή λύση του προβλήματός μου ;

Ευχαριστώ θερμά για το χρόνο σας και την διάθεση των πολύτιμων γνώσεων και απόψεων σας.