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

Ελληνικοί χαρακτήρες σε printf - php


pareisaktos

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

Καλησπέρα παιδιά.

Σε ένα site που έχω φτιάξει σε wordpress, προσπαθώ να βάλω μέσα στην function.php μία συνάρτηση για να μου εμφανίζει με printf ένα error message με ελληνικούς χαρακτήρες . Όμως αντί των ελληνικών χαρακτήρων μου βγάζει το σύμβολο <?>

Από ένα search που έκανα είδα ότι πρέπει να κάνω κάτι με την κωδικοποίηση.

Οποιαδήποτε βοήθεια θα ήταν ευπρόσδεκτη

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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 θα μπορουσα να σε βοηθησω

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Ουσιαστικά έχω προσθέσει τον παρακάτω κώδικα μέσα στο 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 είπε

Έχω διαβάσει αρκετά σχετικά άρθρα στο stackoverflow αλλά δεν έχω καταλάβει που ακριβώς πρέπει να προσθέσω τον σχετικό κώδικα

Επεξ/σία από pareisaktos
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
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/

Επεξ/σία από fragment_
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μετά από διάφορες δοκιμές οι οποίες δεν δούλεψαν τελικά η λύση ήταν πιο απλή απ' όσο νόμιζα. 

Απλά άνοιξα το functions.php με το notepad++ και άλλαξα το encoding σε utf-8. Πλέον οι ελληνικοί χαρακτήρες εμφανίζονται κανονικά

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

10 ώρες πριν, pareisaktos είπε

Μετά από διάφορες δοκιμές οι οποίες δεν δούλεψαν τελικά η λύση ήταν πιο απλή απ' όσο νόμιζα. 

Απλά άνοιξα το functions.php με το notepad++ και άλλαξα το encoding σε utf-8. Πλέον οι ελληνικοί χαρακτήρες εμφανίζονται κανονικά

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

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

7 ώρες πριν, rafinos είπε

Εγώ κατανοώ ότι απλά άλλαξε το encoding του αρχείου και δεν πρόσθεσε κάποιον κώδικα. 

Ναι αυτό εννοώ. Απλά άλλαξα το encoding σε utf-8

  • Like 3
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...