Σελίδα 1 από 1

Πρόβλημα στην κωδικοποίηση Ελληνικών

Δημοσιεύτηκε: 06 Δεκ 2022, 21:29
από jevous
Καλησπέρα σε όλους.
Αντιμετωπίζω το εξής πρόβλημα και δεν μπορώ να καταλάβω την πηγή του.
Έχω δημιουργήσει κάποια custom πεδία (όπως ΑΦΜ, ΔΟΥ κλπ), που συμπληρώνει ο πελάτης που θέλει να κόψει τιμολόγιο και όχι απόδειξη κατά την διαδικασία του checkout.
Όταν πέφτει η παραγγελία, μέσα στο διαχειριστικό του opencart το περιεχόμενο των custom πεδίων φαίνεται κανονικά στα Ελληνικά. Όταν όμως τα δεδομένα αυτά στέλνονται στο entersoft (που είναι το διαχειριστικό πρόγραμμα που χρησιμοποιεί το κατάστημα), τότε εκεί το περιεχόμενο πηγαίνει με λάθος κωδικοποίηση (π.χ. \u03a7\u03b9\u03bf\u03c5).
Που μπορεί να οφείλεται αυτό το γεγονός; Υπάρχει τρόπος να διορθωθεί;
Σας ευχαριστώ

Re: Πρόβλημα στην κωδικοποίηση Ελληνικών

Δημοσιεύτηκε: 06 Δεκ 2022, 22:26
από Alexandra
Καλησπέρα.

Παρακαλώ μην ποστάρετε το ίδιο θέμα και στο Facebook group και στο φόρουμ. Διαλέξτε ένα από τα δύο.

- Σχετικά με το πρόβλημα που ανέφερες ότι τα δεδομένα κατεβαίνουν στο entersoft με λάθος κωδικοποίηση, ο τεχνικός σας χρειάζεται να ελέγξει αν κάνει σωστά αποκωδικοποίηση του json του προσαρμοσμένου πεδίου όπως το λαμβάνει από τη βάση. Ελέγξτε αν κάνετε κάτι σαν πχ json_decode($query->row['custom_field'], true).

- Όντως τα Ελληνικά στα προσαρμοσμένα πεδία καταχωρούνται ως UTF8 entities, ωστόσο, με την αποκωδικοποίηση θα έπρεπε να λαμβάνετε τους σωστούς χαρακτήρες.

- Αν επιθυμείτε να μην καταχωρούνται τα Ελληνικά ως entities στη βάση, μπορείτε να τροποποιήσετε το json_encode($data['custom_field']) στο model του order σε json_encode($data['custom_field'], JSON_UNESCAPED_UNICODE). Υπάρχει και σχετικό θέμα στο φόρουμ: viewtopic.php?p=6393

Re: Πρόβλημα στην κωδικοποίηση Ελληνικών

Δημοσιεύτηκε: 07 Δεκ 2022, 0:00
από jevous
Συγχωρέστε μου την διπλότυπη ανάρτηση.
Θα δοκιμάσω αύριο την λύση που προτείνετε κι αν αντιμετωπίσω κάποιο πρόβλημα θα επανέλθω.
Σας ευχαριστώ πολύ για την απάντηση.

Re: Πρόβλημα στην κωδικοποίηση Ελληνικών

Δημοσιεύτηκε: 07 Δεκ 2022, 21:53
από jevous
Στο αρχείο catalog/model/journal3/order.php, δεν βρίσκω πουθενά την γραμμή κώδικα: json_encode($data['custom_field']) που αναφέρατε. Αντίθετα βρίσκω την εξής γραμμή κώδικα

'custom_field' => json_decode($order_query->row['custom_field'], true),

Αυτήν πρέπει να αλλάξω;

Re: Πρόβλημα στην κωδικοποίηση Ελληνικών

Δημοσιεύτηκε: 08 Δεκ 2022, 1:12
από Alexandra
Καλησπέρα,

Όπως ανέφερα και προηγουμένως, ο λόγος που λαμβάνετε λάθος τα πεδία στο entersoft οφείλεται πιθανότατα στο ότι δεν κάνετε json_decode, το προσαρμοσμένο πεδίο πριν το στείλετε στο entersoft. Αν δεν κάνετε αυτό, το πεδίο δεν αποστέλλεται ως array αλλά ως json encoded text και δεν αποκωδικοποιείται σωστά.

Επίσης, δεν γνωρίζω τι encoding έχει εσωτερικά το entersoft. Αν δεν χρησιμοποιεί UTF8, εκτός των παραπάνω, χρειάζεται να κάνετε και κωδικοποίηση όλου του array των δεδομένων που στέλνετε στο entersoft από UTF8 (OpenCart) στην κωδικοποίηση του entersoft.

Κώδικας: Επιλογή όλων
'custom_field' => json_decode($order_query->row['custom_field'], true),
Ναι αυτό είναι, και υπάρχει και σε άλλα σημεία στο OpenCart. Tο παράδειγμα που σου έδωσα πριν ήταν ένας generic κώδικας για μία τέτοια λειτουργία. Αυτή η αλλαγή θα σε βοηθήσει μόνο αν θες να βλέπεις τις καταχωρήσεις στη βάση στα Ελληνικά. Δεν σχετίζεται με την σωστή μεταφορά δεδομένων στο entersoft.

Re: Πρόβλημα στην κωδικοποίηση Ελληνικών

Δημοσιεύτηκε: 08 Δεκ 2022, 9:23
από jevous
Σας είναι εύκολο να μου πείτε τι πρέπει να αλλάξω ακριβώς και σε ποια αρχεία;
Χρησιμοποιώ έκδοση 2.3.0.2 έκδοση Opencart με Journal 3

Re: Πρόβλημα στην κωδικοποίηση Ελληνικών

Δημοσιεύτηκε: 08 Δεκ 2022, 15:07
από Alexandra
Καλησπέρα σας,

Σας ανέφερα τι χρειάζεται να κάνετε εξ αρχής:
- Σχετικά με το πρόβλημα που ανέφερες ότι τα δεδομένα κατεβαίνουν στο entersoft με λάθος κωδικοποίηση, ο τεχνικός σας χρειάζεται να ελέγξει αν κάνει σωστά αποκωδικοποίηση του json του προσαρμοσμένου πεδίου όπως το λαμβάνει από τη βάση. Ελέγξτε αν κάνετε κάτι σαν πχ json_decode($query->row['custom_field'], true).
Δεν είναι πρόβλημα του OpenCart και δεν χρειάζεται να κάνετε κάτι στο OpenCart. Χρειάζεται ο τεχνικός σας που έφτιαξε τη γέφυρα του entersoft να ελέγξει που είναι το πρόβλημα με το decoding του προσαρμοσμένου πεδίου στον δικό του κώδικα και να το διορθώσει. Με το παραπάνω έκανα μία πρόταση σχετικά με το τι να ελέγξει.

Όσον αφορά τα υπόλοιπα, θέσατε ένα ερώτημα και για να είναι πιο πλήρης η απάντηση, σας εξήγησα και πως να μετατρέπετε τους χαρακτήρες στα JSON των προσαρμοσμένων πεδίων από entities σε κανονικούς χαρακτήρες και έχετε σταθεί σε αυτό. Ωστόσο, αυτό δεν αφορά τη διασύνδεση με το entersoft, αλλά μόνο για την ευκολότερη αναζήτηση κειμένου στα JSON των προσαρμοσμένων πεδίων.