πώς 8α βάλλω τα ελληνικά στο sbox_v1.15

Started by moysys, October 31, 2006, 11:59:01 AM

Previous topic - Next topic

Eva

πάντως φαίνεται να έχει κάποιο πρόβλημα με κάποιους χαρακτήρες (όπως το ώ) αλλά και με συνδυασμούς χαρακτήρων χωρίς όμως να έχω εντοπίσει ακριβώς το πρόβλημα...  :-\

agridoc

Eva από καιρό είχα εντοπίσει το πρόβλημα σ' αυτό το κομμάτι του κώδικα και είχα στείλει μήνυμα στο http://www.simplemachines.org/community/index.php?topic=115579.msg793975#msg793975. Ισως όμως υπάρχουν και άλλα σημεία.

Δυστυχώς δεν ενδιαφέρθηκε κανείς. Για γενικό θέμα SMF μπορώ να σπρώξω κάπως τα πράγματα, τα mods είναι υπόθεση του δημιουργού τους.

Συνέχισε τις προσπάθειες  ;)
  For Greek aeromodellers and our friends around the world  - Greek Button sets for SMF - Greeklish to Greek mod
Δeν αφιερώνω χρόνο για μηνύματα σε greeklish.

apollonios

Το προβλημα λυνεται αν στο my.cnf δωσετε αυτες τις τιμες:

[mysqld]

init_connect = 'SET collation_connection = utf8_general_ci'
init_connect = 'SET NAMES utf8'
default-character-set =greek
character-set-server = utf8
collation-server = utf8_general_ci


Προϋποθεση ειναι να εχετε root προσβαση στον σερβερ.

agridoc

Ελάχιστοι έχουν δικό τους server και ελάχιστοι χρειάζονται πραγματικά.

Από πλευράς τακτικής δεν το βρίσκω δόκιμο να επεμβαίνεις σε χαμηλό επίπεδο συστήματος για να διορθώσεις κάτι που μπορεί να διορθωθεί από τον κώδικα της PHP και να τρέχει σε όλους τους servers και codepages.
  For Greek aeromodellers and our friends around the world  - Greek Button sets for SMF - Greeklish to Greek mod
Δeν αφιερώνω χρόνο για μηνύματα σε greeklish.

apollonios

Quote from: agridoc on November 25, 2006, 04:50:59 AM
Ελάχιστοι έχουν δικό τους server και ελάχιστοι χρειάζονται πραγματικά.

Μαλιστα...
Δεν ειπα οτι ΠΡΕΠΕΙ ΝΤΕ ΚΑΙ ΚΑΛΑ να παρουν δικο τους σερβερ . Απλα δινω μια λυση στην οποια μερικοι θησαυριζουν απο την αγνοια των πελατων τους.
Κανουν δηθεν πως πειραζουν "αυτο" λενε δηθεν πως κανουν compile "εκεινο" τη μια φταιει ο Router στη Γερμανια και δωστου να ζητανε χρηματα.

Το προηγουμενο μηνυμα μου λυνει απαξ και δια παντως το προβλημα των Ελληνικων σε εναν σερβερ!!
Μηπως δεν επρεπε να το γραψω?

agridoc

Επίσης τα μεγάλα και υπογραμμισμένα γράμματα είναι σε αδόκιμη χρήση apollonios. Δείχνει να υποτιμάς αυτούς στους οποίους απευθύνεται.

Δίνεις μια λύση που δουλεύει καλά στον δικό σου server και με τις δικές σου επιλογές. Ολα καλά για σένα. Επίσης είναι προσφορά που δίνεις το setup που χρησιμοποιείς. Δέχομαι οτι μπορεί να είναι σωστό. Για τους περισσότερους όμως η λύση αυτή είναι ανέφικτη και νομίζω οτι προϋποθέτει και την επιλογή UTF-8. Ισως κάνω λάθος.

Ενα mod για το SMF όμως, πρέπει να δουλεύει κατά το δυνατόν σε όλες τις πλατφόρμες και με το set χαρακτήρων επιλογής αυτού που το χρησιμοποιεί. Μπορεί να γίνει από τον κώδικα και έτσι θα μπορεί να χρησιμοποιηθεί από όλους, τουλάχιστον στις περισσότερες περιπτώσεις.

Ο δημιουργός του (όπως κι εσύ) δεν είχε πρόβλημα στην γλώσσα του. Μπαίνοντας το mod σε κυκλοφορία εντοπίζονται προβλήματα σε διάφορες περιπτώσεις και συνήθως λύνονται σιγά - σιγά. Αυτή είναι και η αρχή του open source.
  For Greek aeromodellers and our friends around the world  - Greek Button sets for SMF - Greeklish to Greek mod
Δeν αφιερώνω χρόνο για μηνύματα σε greeklish.

Eva

Τελικά δεν βρέθηκε κάποια καλύτερη λύση από τότε έτσι?  :-\

diavlos

Εγώ χρησιμοποιώ το Shoutbox του Deep (http://www.simplemachines.org/community/index.php?topic=76344.60) δεν υποστηρίζει Ελληνικά αλλά αν στο αρχείο sboxDB.php. δεν "μπει" ο κώδικας // handle special characters
$content=addslashes($content);
// enquote html and script code to avoid html/javascript injection
$content = htmlentities($content, ENT_QUOTES);


ΑΛΛΑ παραμείνει ο κώδικας // handle spacial characters
$content=addslashes($content);


τότε υποστηρίζονται τα Ελληνικά

Σωστό ή λάθος αυτό παρατήρησα και το άφησα έτσι, μέχρι τώρα δεν έχω εντοπίσει σφάλματα

Eva

Άλλη μια μπακαλίστικη λύση (προς το παρόν χωρίς bugs):
Δεν ξέρω τι ακριβώς κάνει το function missinghtmlentities πάντως αυτό είναι που δημιουργεί το πρόβλημα με τα Ελληνικά  ::)

Αφαιρούμε όλο το function αυτό από την γραμμή 85 μέχρι την γραμμή 100

function missinghtmlentities($text) {
  global $context;
  // entitify missing characters, ignore entities already there (Unicode / UTF8) (hopefully in {-notation)
  $split = preg_split('/(&#[\d]+;)/', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
  $result = '';
  foreach ($split as $s) {
    if (substr($s, 0, 2) != '&#' || substr($s, -1, 1) != ';') {
      // filter out "ANSI_X3.4-1968" charset, which just means plain old ASCII ... replace by UTF-8
      if (strpos($context['character_set'], 'ANSI_') !== false) $charset = 'UTF-8'; else $charset = $context['character_set'];
      $result .= @htmlentities($s, ENT_NOQUOTES, $charset);
    } else {
      $result .= $s;
    }
  }
  return $result;
}


Και αφαιρούμε και τα σημεία που το καλεί στις γραμμές 199 και 306
$content = missinghtmlentities($content);

Και δουλεύουν κανονικά τα Ελληνικά με όλα τους τα γράμματα, τονισμένα ή μη ;)


agridoc

Ενα χρόνο πριν, με μια γρήγορη ματιά, είχα εντοπίσει οτι εκεί χρειάζεται αλλαγή και το έγραψα στο θέμα υποστήριξης του mod.

Quote from: agridoc on November 02, 2006, 02:21:34 PM
After a quick glance, I believe that the problem for non UTF-8 encoding is this part of code in sboxDB.php

function missinghtmlentities($text) {
  global $context;
  // entitify missing characters, ignore entities already there (Unicode / UTF8) (hopefully in {-notation)
  $split = preg_split('/(&#[\d]+;)/', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
  $result = '';
  foreach ($split as $s) {
    if (substr($s, 0, 2) != '&#' || substr($s, -1, 1) != ';') {
      // filter out "ANSI_X3.4-1968" charset, which just means plain old ASCII ... replace by UTF-8
      if (strpos($context['character_set'], 'ANSI_') !== false) $charset = 'UTF-8'; else $charset = $context['character_set'];
      $result .= @htmlentities($s, ENT_NOQUOTES, $charset);
    } else {
      $result .= $s;
    }
  }
  return $result;
}


However some more points might need examining.

I see in the topic interest from another Greek and a Turkish about codepage conflict problem of SMF Shoutbox.

Εσύ λοιπόν Eva αφαίρεσες τελείως το function και τις αναφορές σ' αυτό και δούλεψε  8)

Εχω μόνο μια μικρή επιφύλαξη για την ασφάλεια του κώδικα μετά την παρέμβαση. Τα διάφορα Shoutboxes έχουν αποτελέσει πύλες εισόδου ξένου κώδικα.
  For Greek aeromodellers and our friends around the world  - Greek Button sets for SMF - Greeklish to Greek mod
Δeν αφιερώνω χρόνο για μηνύματα σε greeklish.

Eva

Έχεις απόλυτο δίκιο όσων αφορά την ασφάλεια, μόνο που δεν έχω ιδέα τι έκανε αυτό το function εν τέλει και σε τι χρησίμευε ::)
Τουλάχιστον δουλεύει  :P

Advertisement: