pareisaktos Δημοσ. 22 Νοεμβρίου 2020 Δημοσ. 22 Νοεμβρίου 2020 Καλησπέρα παιδιά. Σε ένα site που έχω φτιάξει σε wordpress, προσπαθώ να βάλω μέσα στην function.php μία συνάρτηση για να μου εμφανίζει με printf ένα error message με ελληνικούς χαρακτήρες . Όμως αντί των ελληνικών χαρακτήρων μου βγάζει το σύμβολο <?> Από ένα search που έκανα είδα ότι πρέπει να κάνω κάτι με την κωδικοποίηση. Οποιαδήποτε βοήθεια θα ήταν ευπρόσδεκτη
tsofras Δημοσ. 23 Νοεμβρίου 2020 Δημοσ. 23 Νοεμβρίου 2020 2 ώρες πριν, pareisaktos είπε Καλησπέρα παιδιά. Σε ένα site που έχω φτιάξει σε wordpress, προσπαθώ να βάλω μέσα στην function.php μία συνάρτηση για να μου εμφανίζει με printf ένα error message με ελληνικούς χαρακτήρες . Όμως αντί των ελληνικών χαρακτήρων μου βγάζει το σύμβολο <?> Από ένα search που έκανα είδα ότι πρέπει να κάνω κάτι με την κωδικοποίηση. Οποιαδήποτε βοήθεια θα ήταν ευπρόσδεκτη Έχεις θέσει το σωστό encoding σε html, php ? https://stackoverflow.com/questions/15398251/greek-characters-encoding-works-in-html-but-not-in-php#16342841 1
fragment_ Δημοσ. 23 Νοεμβρίου 2020 Δημοσ. 23 Νοεμβρίου 2020 14 ώρες πριν, pareisaktos είπε Καλησπέρα παιδιά. Σε ένα site που έχω φτιάξει σε wordpress, προσπαθώ να βάλω μέσα στην function.php μία συνάρτηση για να μου εμφανίζει με printf ένα error message με ελληνικούς χαρακτήρες . Όμως αντί των ελληνικών χαρακτήρων μου βγάζει το σύμβολο <?> Από ένα search που έκανα είδα ότι πρέπει να κάνω κάτι με την κωδικοποίηση. Οποιαδήποτε βοήθεια θα ήταν ευπρόσδεκτη function print_error_message (...) { mb_internal_encoding('UTF-8'); setlocale(LC_ALL, "el_GR.utf8"); //linux server, αν παιξεις και με ημερομηνιες //setlocale(LC_ALL, "Greek_Greece.utf8"); // windows server,... } η ευκολη λυση ειναι να ορισεις τα encoding μεσα στην συναρτηση, σε καμια περιπτωση μη τα βγαλεις εξω απ την συναρτηση και κοιταξε τις ρυθμισεις του wordpress να τις κανεις global. δεν εχω δουλεψει με wordpress σε αλλα framework θα μπορουσα να σε βοηθησω 1
pareisaktos Δημοσ. 23 Νοεμβρίου 2020 Μέλος Δημοσ. 23 Νοεμβρίου 2020 (επεξεργασμένο) Ουσιαστικά έχω προσθέσει τον παρακάτω κώδικα μέσα στο function.php, απλά στο message του error ''You have kg weight.....'' έχω προσθέσει το κείμενο στα ελληνικά: Αναφορά σε κείμενο add_action(‘woocommerce_check_cart_items’,’check_cart_weight’); function check_cart_weight(){ global $woocommerce; $weight = $woocommerce->cart->cart_contents_weight; if( $weight > 30 ){ wc_add_notice( sprintf( __( ‘You have %sKg weight and we allow only 30Kg of weight per order.’, ‘woocommerce’ ), $weight ), ‘error’ ); } } άρα λογικά πρέπει να προσθέσω τα: mb_internal_encoding('UTF-8'); setlocale(LC_ALL, "el_GR.utf8"); μέσα στη συνάρτηση. Θα το δοκιμάσω. Ευχαριστώ για τη βοήθεια 11 ώρες πριν, tsofras είπε Έχεις θέσει το σωστό encoding σε html, php ? https://stackoverflow.com/questions/15398251/greek-characters-encoding-works-in-html-but-not-in-php#16342841 Έχω διαβάσει αρκετά σχετικά άρθρα στο stackoverflow αλλά δεν έχω καταλάβει που ακριβώς πρέπει να προσθέσω τον σχετικό κώδικα Επεξ/σία 23 Νοεμβρίου 2020 από pareisaktos
fragment_ Δημοσ. 23 Νοεμβρίου 2020 Δημοσ. 23 Νοεμβρίου 2020 (επεξεργασμένο) 52 λεπτά πριν, pareisaktos είπε Ουσιαστικά έχω προσθέσει τον παρακάτω κώδικα μέσα στο function.php, απλά στο message του error ''You have kg weight.....'' έχω προσθέσει το κείμενο στα ελληνικά: άρα λογικά πρέπει να προσθέσω τα: mb_internal_encoding('UTF-8'); setlocale(LC_ALL, "el_GR.utf8"); μέσα στη συνάρτηση. Θα το δοκιμάσω. Ευχαριστώ για τη βοήθεια Έχω διαβάσει αρκετά σχετικά άρθρα στο stackoverflow αλλά δεν έχω καταλάβει που ακριβώς πρέπει να προσθέσω τον σχετικό κώδικα sprintf με ελληνικούς χαρακτήρες; χμμ.. δοκίμασε πάνω απο την συνάρτηση check cart weight να προσθέσεις και αυτή την συνάρτηση και ύστερα στην συνάρτηση check cart weight να αλλάξεις την sprintf σε mb_sprintf. τα encoding ισχύουν που σου εστειλα πριν θα τα ορίσεις στην αρχη της συνάρτησης check cart weight και τσεκαρε με προσοχη if (!function_exists('mb_sprintf')) { function mb_sprintf($format, ...$args) { $params = $args; $callback = function ($length) use (&$params) { $value = array_shift($params); return strlen($value) - mb_strlen($value) + $length[0]; }; $format = preg_replace_callback('/(?<=%|%-)\d+(?=s)/', $callback, $format); return sprintf($format, ...$args); } } δοκιμασε αν υπαρχει και η wp_sprintf και δουλευει δε χανεις τιποτα δε ξερω που ορίζεις τα environment variables (στη παρακατω περιπτωση το blog_charset) αλλα φροντισε να ρυθμισεις σε επιπεδο global τα encoding για να μην εχεις θεματα. Πάρε μια γεύση: https://developer.wordpress.org/reference/functions/wp_set_internal_encoding/ Επεξ/σία 23 Νοεμβρίου 2020 από fragment_ 1
pareisaktos Δημοσ. 26 Νοεμβρίου 2020 Μέλος Δημοσ. 26 Νοεμβρίου 2020 Μετά από διάφορες δοκιμές οι οποίες δεν δούλεψαν τελικά η λύση ήταν πιο απλή απ' όσο νόμιζα. Απλά άνοιξα το functions.php με το notepad++ και άλλαξα το encoding σε utf-8. Πλέον οι ελληνικοί χαρακτήρες εμφανίζονται κανονικά
fragment_ Δημοσ. 27 Νοεμβρίου 2020 Δημοσ. 27 Νοεμβρίου 2020 10 ώρες πριν, pareisaktos είπε Μετά από διάφορες δοκιμές οι οποίες δεν δούλεψαν τελικά η λύση ήταν πιο απλή απ' όσο νόμιζα. Απλά άνοιξα το functions.php με το notepad++ και άλλαξα το encoding σε utf-8. Πλέον οι ελληνικοί χαρακτήρες εμφανίζονται κανονικά Ελπίζω να μη χρειαστείς να κάνεις update ποτέ στο μέλλον γιατί θα βρεθείς προ εκπλήξεως, σίγουρα δεν είναι το σωστό σημείο να ορίσεις το encoding αλλά αν αυτό σου λύνει τα χέρια καλώς
rafinos Δημοσ. 27 Νοεμβρίου 2020 Δημοσ. 27 Νοεμβρίου 2020 Εγώ κατανοώ ότι απλά άλλαξε το encoding του αρχείου και δεν πρόσθεσε κάποιον κώδικα. 1
pareisaktos Δημοσ. 27 Νοεμβρίου 2020 Μέλος Δημοσ. 27 Νοεμβρίου 2020 7 ώρες πριν, rafinos είπε Εγώ κατανοώ ότι απλά άλλαξε το encoding του αρχείου και δεν πρόσθεσε κάποιον κώδικα. Ναι αυτό εννοώ. Απλά άλλαξα το encoding σε utf-8 3
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα