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

Ερώτηση για κωδικοποίηση χαρακτήρων σε javascript


adamco

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

Δημοσ.

Γεια σας

Έχω έναν search engine με javascript (search.html) που λειτουργούσε τέλεια πριν 5-6 χρόνια σε συνεργασία με το database (db.js) που είχε records είτε εξ ολοκλήρου με αγγλικούς χαρακτήρες είτε records με ελληνικούς χαρακτήρες.

Τώρα όμως που άλλαξαν τόσα πολλά (hardware, operative systems, browsers κλπ) στο καινούργιο μου laptop όταν κάνω έρευνα με ελληνικές λέξεις μου βγάζει κινέζικους χαρακτήρες και δεν βρίσκει τα records που περιέχουν την λέξη. Όταν βάζω όμως αγγλικές λέξεις δεν παρατηρείται κανένα πρόβλημα.

 

Αν μεταφέρω τον search engine σε server που λειτουργεί με php τα records του αρχείου db.js που είναι με ελληνικούς χαρακτήρες μετατρέπονται σε σειρές από τριψήφια νούμερα.

Δοκίμασα με όλες τις κωδικοποιήσεις (Windows-1253, UTF-8, ISO-8859-7) αλλά το πρόβλημα με τις ελληνικές λέξεις συνεχίζει να υφίσταται.

Τι μπορώ να κάνω για να λύσω το πρόβλημα;

 

Σας ευχαριστώ

Δημοσ.

Βασικά το θέμα σου είναι περίπλοκα και χωρίς σαφήνισα διατυπωμένο.

 

Εμένα βασικά με μπερδεύει πάρα πολύ το "Μηχανή αναζήτησης" και "JavaScript", καθώς δεν είναι τόσο συνηθισμένη η κατασκευή μηχανών αναζήτησης σε JavaScript, ωστόσο δεν μπορώ να με είμαι και 100% βέβαιος γιατί δεν ξέρω την υλοποίηση που έχεις.

 

Νομίζω πως για να πάρεις μια ποιο εμπεριστατωμένη απάντηση στο πρόβλημα σου θα πρέπει να μας παρουσιάσεις τον κώδικα σου.

Δημοσ.

Όντως ο όρος search engine δεν είναι και ο καταλληλότερος.

Το πρόγραμμα όμως που χρησιμοποίησα ονομάζεται "XSearch v5.2 Javascript SearchEngine".

Στην ουσία δεν ψάχνει το διαδίκτυο ούτε καν τις διάφορες σελίδες html και php του site αλλά σε ένα αρχείο ξεχωριστό (db.js) που περιέχει τα records. Κάθε record είναι ο τίτλος ενός τεχνικού άρθρου, οι συγγραφείς του, μια σύντομη περίληψη και το link.

Τα αποτελέσματα που μου δίνει το πρόγραμμα όταν κάνω έρευνα με αγγλικές keywords μοιάζουν σαν την σελιδοποιημένη απάντηση που δίνει η Altavista και το Google.

 

Θέλω να δίνει και τα records της ελληνικής τεχνικής βιβλιογραφίας όπως πριν 5-6 χρόνια αλλά τώρα με τις διάφορες κωδικοποιήσεις των χαρακτήρων δεν γίνεται.

Δημοσ.

Γενικά η λύση στο πρόβλημά σου είναι από μετρίως ως πολύ απλή. Το θέμα είναι ότι η περιγραφή σου είναι πολύ γενική και δεν δίνεις κάποιο link. Τα προβλήματα τεχνικής φύσης χρειάζονται λεπτομέρειες για να διορθωθούν.

Δημοσ.

Μου φαίνεται ότι το πρόβλημα με την κωδικοποίηση των χαρακτήρων είναι γενικότερο και δεν είναι απαραίτητο να δώσω τον κώδικα javascript εφόσον είναι πολύ μεγάλος ή το link εφόσον το site είναι "Under Construction".

 

Σε έναν freeware search engine γραμμένο σε php κάπου έγραφε:

 

Known problems

1. Due to bug in some PHP versions fast searching code was removed from script and old algorithm is used again. Users of Windows can download faster version here - risearch_php-0.2

2. If script does not work with non-latin characters, try to add this line at the top of every script and reindex site:

setlocale(LC_ALL, "ru_RU.CP1251");

 

Μήπως αυτό βοηθάει για να έχουμε την λύση;

 

Υπάρχει και η εξής εναλλακτική λύση. Τώρα την σκέφτηκα...

Αν βάλω μια συνάρτηση για να μετατρέπει τις ελληνικές λέξεις σε μια σειρά με τριψήφια νούμερα (έτσι όπως σώζονται στον server τα ελληνικά) η μηχανή αναζήτησης θα μου δίνει απάντηση ακόμα και με ελληνικούς χαρακτήρες.

Υπάρχει έτοιμη function για να μην παιδεύομαι;

Δημοσ.

Βλέπω πως ούτε εσύ έχεις καταλάβει ποιό ακριβώς είναι το πρόβλημα, ούτε και μεις (όπως έγραψα παραπάνω). To debugging δεν είναι ραντεβού για να μπορείς να το κάνεις στα τυφλά, οπότε δε νομίζω πως μπορώ να βοηθήσω περισσότερο (επίσης, είμαι εναντίον της λύσης προβλημάτων με τη μέθοδο "κάνω πράγματα στην τύχη μέχρι κάτι να δουλέψει").

Δημοσ.

Πως δεν το έχω καταλάβει το πρόβλημα. Ήδη το έχω λύσει.

Έκανα χθες ένα τεστ στο πρόγραμμα της μηχανής αναζήτησης και αντί για την λέξη έβαλα σαν keyword το 965 957 945 964 972 964 951 964 945 και μου έδωσε ακριβώς το record που έψαχνα + μερικά ακόμα!!!

Άρα με μια κατάλληλη function που θα κωδικοποιεί την είσοδο ο search engine θα λειτουργεί και με ελληνικούς χαρακτήρες όπως παλιά.

 

 

 

Σε ευχαριστώ για την διάθεσή σου να βοηθήσεις... :)

Πολλές φορές η λύση μπορεί να βρεθεί εντελώς τυχαία ψάχνωντας στο διαδίκτυο. Ίσως κάποιος να έχει συναντήσει το ιδιο πρόβλημα και να το έχει λύσει.

 

Όμως γενικά με τον ανταγωνισμό που υπάρχει μεταξύ των προγραμματιστών κάτι που λειτουργεί τέλεια σήμερα στο σύστημά σου αύριο μπορεί να μην λειτουργεί. Έχω δει την κατάρρευση ολόκληρων sites εταιρειών με τις διάφορες αλλαγές και αναβαθμίσεις.

Χθες διάβασα ότι ο Chrome θα αγνοεί τις εντολές document.write της javascript. Αυτό είναι σωστό; Δεν θα λειτουργούν πολλές φόρμες.

Η Microsoft ξαφνικά αποφάσισε να μην υποστηρίζει την asp στα Windows XP και ότι είχα φτιάξει σε asp καταστράφηκε.

Δημοσ.

Έκανα χθες ένα τεστ στο πρόγραμμα της μηχανής αναζήτησης και αντί για την λέξη έβαλα σαν keyword το 965 957 945 964 972 964 951 964 945 και μου έδωσε ακριβώς το record που έψαχνα + μερικά ακόμα!!!

Άρα με μια κατάλληλη function που θα κωδικοποιεί την είσοδο ο search engine θα λειτουργεί και με ελληνικούς χαρακτήρες όπως παλιά.

Μα... το θέμα δεν είναι να αλλάξεις όλο τον κώδικα για να έρθει σύμφωνα με το αρχείο σου, το θέμα είναι να βρεις γιατί άλλαξε η κωδικοποίηση στο αρχείο και από ελληνικά στα γράφει 451 812 512! Άμα αύριο μεθαύριο αλλάξεις server και σου ξαναπαρουσιαστεί το πρόβλημα αυτό, θα ξαναγράψεις τον κώδικα;

 

Χθες διάβασα ότι ο Chrome θα αγνοεί τις εντολές document.write της javascript. Αυτό είναι σωστό; Δεν θα λειτουργούν πολλές φόρμες.

Που το διάβασες αυτό;

 

Η Microsoft ξαφνικά αποφάσισε να μην υποστηρίζει την asp στα Windows XP και ότι είχα φτιάξει σε asp καταστράφηκε.

Τα XP είναι πλέον λειτουργικό δεκαετίας και η MS έχει ανακοινώσει εδώ και καιρό την κατήργηση της υποστήριξής τους- αυτό όμως δε σημαίνει ότι δε θα μπορείς να εγκαταστήσεις iis!

Δημοσ.

 

Εκτός του ότι ακόμα κι αν αγνοούσε παντελώς την document.write (η οποία αν κάτσεις να κάνεις μια βαθιά τεχνική συζήτηση γύρω της θα καταλάβεις ότι είναι μελανό σημείο της ιστορίας του DOM) καλά θα έκανε κατά την άποψή μου, αυτό που λέει η σελίδα στην οποία κάνεις link είναι τελείως διαφορετικό.

 

Βασικά είναι σα να διάβασες κάπου ότι "ψηφίστηκε νόμος σύμφωνα με τον οποίο τα βρέφη που μεταλλάσσονται σε Alien λόγω αμέλειας των γονέων τους που έφεραν κατοικίδιο Alien μέσα στο σπίτι θα θανατώνονται" και να μας έγραψες εδώ ότι "ψηφίστηκε νόμος σύμφωνα με τον οποίο όλα τα βρέφη θα θανατώνονται πάραυτα".

 

Anyway αν θες τη συμβουλή μου μην αντιμετωπίζεις τα πράγματα με επιπολαιότητα, σε μάκρος χρόνου θα σου κοστίσει πολύ.

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

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

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