Ruby 1.8 και θήκη UTF-8 εγχόρδων δήλωση συγκρίνετε

ψήφοι
1

Έχω μια εργασία Rake (στο lib / εργασίες κατάλογο) που τρέχω με το cron σε κοινές web hosting μου. Το πρόβλημα είναι ότι θέλω να συγκρίνετε UTF-8 εγχόρδων χρησιμοποιώντας περίπτωση statment αλλά πηγαίο κώδικα μου δεν είναι UTF-8 κωδικοποίηση. Αν έχω σώσει τον πηγαίο κώδικα, όπως UTF-8 δεν υπάρχει σφάλμα όταν προσπαθώ να το ξεκινήσει :(

Τι πρέπει να κάνω?

Μπορεί να διαβάσει αυτό χορδές από εξωτερικό αρχείο txt UTF-8;

PS Είμαι χρησιμοποιώντας Ruby 1.8

PS εννοώ συγκρίνουν με αυτόν τον τρόπο:

result = case utf8string
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
Δημοσιεύθηκε 09/12/2008 στις 17:16
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
2

Βρήκα ότι το πρόβλημά μου δεν ήταν στην περίπτωση statment

Το πρόβλημα ήταν ότι όταν σώσει τον πηγαίο κώδικα μου σε μορφή UTF-8, επεξεργαστή κειμένου μου, προσθέστε 3 bytes (BOM) στην αρχή για να δείξει ότι η κωδικοποίηση είναι UTF-8.

Ε: Τι είναι το BOM;

Α: Ένα σημάδι σειρά byte (ΒΟΜ) αποτελείται από τον κωδικό χαρακτήρα U + feff στην αρχή ενός ρεύματος δεδομένων, όπου μπορεί να χρησιμοποιηθεί ως μια υπογραφή που ορίζει τη σειρά byte και τη μορφή κωδικοποίησης, κυρίως των σημαδεμένο plaintext αρχείων. Υπό ορισμένες υψηλότερου πρωτόκολλα επιπέδου, χρήση ενός ΒΟΜ μπορεί να είναι υποχρεωτική (ή απαγορευμένων) στο ρεύμα δεδομένων Unicode ορίζονται στο εν λόγω πρωτόκολλο.

UTF-8, UTF-16, UTF-32 & ΒΟΜ

Το σφάλμα που παίρνω ήταν:

1: Invalid char `\357' in expression
1: Invalid char `\273' in expression
1: Invalid char `\277' in expression
Απαντήθηκε 10/12/2008 στις 09:34
πηγή χρήστη

ψήφοι
1

Θα έλεγα ότι θα πρέπει να αλλάξει επεξεργαστή κειμένου σας, όπως BOM είναι να μην απαιτείται για UTF-8. UTF-8 δεν είναι byte-σειρά που εξαρτάται. Δείτε το κείμενο σύνδεσμο για λεπτομέρειες.

Απαντήθηκε 11/12/2008 στις 10:57
πηγή χρήστη

ψήφοι
0

Δοκιμάστε να χρησιμοποιήσετε τη mb_charsμέθοδο από Rails' ActiveSupport πλαίσιο:

result = case utf8string.mb_chars
   when 'АБВ': 1
   when 'ГДИ': 2
   when 'ЙКЛ': 3
   when 'МНО': 4
   else 5
end
Απαντήθηκε 09/12/2008 στις 22:18
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more