Μη έγκυρο όνομα κωδικοποίησης ml 1c bitrix. Επίλυση προβλημάτων με λανθασμένη κωδικοποίηση της ιστοσελίδας. Εσφαλμένη κωδικοποίηση των αποτελεσμάτων από τη βάση δεδομένων MySQL

Εάν η κωδικοποίηση είναι λανθασμένη, ολόκληρος ο ιστότοπος ή μέρος του εμφανίζεται ως "kryapozyabl", δηλ. ακατανόητα σύμβολακαθιστώντας το κείμενο δυσανάγνωστο. Αυτή η κατάσταση μπορεί να προκύψει εάν η κωδικοποίηση του διακομιστή web δεν έχει ρυθμιστεί σωστά ή εάν δεν υπάρχουν ρυθμίσεις. Σκεφτείτε πιθανές επιλογέςκαι πώς να διορθώσετε προβλήματα

Εσφαλμένη κωδικοποίηση σελίδας HTML

Ας δημιουργήσουμε ένα δοκιμαστικό αρχείο:

Sudo gedit /var/www/html/encoding.html

Ας αντιγράψουμε σε αυτό:

Έλεγχος της κωδικοποίησης

Ας ανοίξουμε αυτό το αρχείο στο πρόγραμμα περιήγησης http://localhost/encoding.html

Όπως μπορείτε να δείτε, η κωδικοποίηση του προγράμματος περιήγησης δεν έχει οριστεί σωστά:

Υπάρχουν διάφοροι τρόποι για να διορθώσετε αυτήν την κατάσταση. Ας ξεκινήσουμε με το πιο απλό πράγμα - προσδιορίστε ρητά την κωδικοποίηση για την ιστοσελίδα. Αυτό γίνεται από τη μετα-ετικέτα, η οποία πρέπει να τοποθετηθεί μέσα στην ετικέτα. κεφάλι:

Ας προσθέσουμε αυτή τη γραμμή στο δοκιμαστικό μας αρχείο ώστε να μοιάζει με αυτό:

Έλεγχος της κωδικοποίησης

Δοκιμή αρχείου για έλεγχο κωδικοποίησης

Όπως μπορούμε να δούμε από το παρακάτω στιγμιότυπο οθόνης, το πρόβλημα έχει επιλυθεί:

Εάν η κωδικοποίηση του αρχείου σας είναι διαφορετική από UTF-8, μετά βάλε windows-1251ή αυτό που ταιριάζει με την κωδικοποίηση της ιστοσελίδας. Για να μάθετε πώς να προσδιορίζετε την κωδικοποίηση των αρχείων, ρίξτε μια ματιά.

Αυτός ήταν ο ευκολότερος τρόπος για να διορθώσετε το πρόβλημα κωδικοποίησης - χωρίς να αλλάξετε τις ρυθμίσεις του διακομιστή.

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

Εάν τα αρχεία .htaccessενεργοποιημένα από τις ρυθμίσεις του Apache, αυτά τα αρχεία μπορούν να χρησιμοποιηθούν για τον καθορισμό της κωδικοποίησης των σελίδων που αποστέλλονται από τον διακομιστή Ιστού. Για να ενεργοποιήσετε την υποστήριξη αρχείων .htaccess v αρχείο ρυθμίσεωνΑπάτσι ( /etc/apache2/apache2.conf) βρείτε μια ομάδα γραμμών

Επιλογές Ευρετήρια FollowSymLinks AllowOverride Κανένα Απαιτείται η παραχώρηση όλων

Και σε αυτό αντικαταστήστε

Allow Override None

Allow Override All

Μετά από αυτό, ο διακομιστής πρέπει να επανεκκινηθεί.

Το Sudo systemctl επανεκκινεί το apache2.service

Αρχείο .htaccessπρέπει να τοποθετηθεί στον ίδιο κατάλογο με τον ιστότοπο. Ο ιστότοπός μου φιλοξενείται στον ριζικό κατάλογο του διακομιστή ιστού. Αν έχετε και εσείς, τότε τώρα στον φάκελο / var / www / html /δημιουργήστε ένα αρχείο .htaccessκαι προσθέστε την οδηγία σε αυτό AddDefaultCharsetμετά την οποία καθορίστε την επιθυμητή κωδικοποίηση. Παραδείγματα του

AddDefaultCharset UTF-8

AddDefaultCharset windows-1251

Μπορείτε να καθορίσετε την κωδικοποίηση που θα εφαρμόζεται μόνο σε αρχεία συγκεκριμένης μορφής:

AddCharset utf-8 .atom .css .js .json .rss .vtt .xml

Το σύνολο των αρχείων μπορεί να είναι οτιδήποτε, για παράδειγμα:

AddCharset utf-8 .html .css .php .txt .js

Η επόμενη επιλογή είναι μια εναλλακτική και σας επιτρέπει επίσης να ορίσετε την κωδικοποίηση για αρχεία συγκεκριμένου τύπου, για αυτό πρέπει να ενεργοποιήσετε mod_headers:

Σύνολο κεφαλίδων Content-Type "text / html; charset = utf-8"

Μια άλλη επιλογή που μπορεί επίσης να χρησιμοποιηθεί στο αρχείο .htaccessγια να ορίσετε την κωδικοποίηση UTF-8:

IndexOptions + Charset = UTF-8

Εάν ο ιστότοπος είναι σε PHP, τότε μπορεί επιπλέον να χρειαστεί να αντιγράψετε την κωδικοποίηση με php_value default_charset:

AddDefaultCharset windows-1251 php_value default_charset "cp1251"

Αντί να δημιουργήσετε ένα αρχείο .htaccess, μπορείτε να ορίσετε την κωδικοποίηση στο αρχείο διαμόρφωσης του διακομιστή web. Για το Apache CentOS / Fedora, αυτό είναι το αρχείο httpd.conf και στο Debian / Ubuntu, αυτό είναι το αρχείο apache2.conf. Προσθέστε την ακόλουθη γραμμή για να ορίσετε την κωδικοποίηση και επανεκκινήστε τον διακομιστή web για να τεθούν σε ισχύ οι αλλαγές:

AddDefaultCharset UTF-8

Πώς να ρυθμίσετε την κωδικοποίηση UTF-8 στην PHP

Το σενάριο PHP χρησιμοποιείται για να ορίσει την κωδικοποίηση επί κεφαλής, για παράδειγμα:

Κεφαλίδα ("Content-Type: charset = utf-8");

Συνήθως, μαζί με την κωδικοποίηση, υποδεικνύεται και ο τύπος περιεχομένου (στο παράδειγμα, η επιλογή για μια σελίδα HTML):

Κεφαλίδα ("Τύπος περιεχομένου: κείμενο / html; σύνολο χαρακτήρων = utf-8");

Μια άλλη επιλογή για ροή RSS:

Κεφαλίδα ("Τύπος περιεχομένου: κείμενο / xml; σύνολο χαρακτήρων = utf-8");

Να θυμάστε ότι η συνάρτηση επί κεφαλήςπρέπει να κληθεί πριν από οποιαδήποτε έξοδο στο πρόγραμμα περιήγησης. Διαφορετικά (αν η έξοδος στο πρόγραμμα περιήγησης έχει ήδη γίνει), τότε οι κεφαλίδες έχουν ήδη σταλεί. Προφανώς, σε αυτή την περίπτωση δεν είναι πλέον δυνατή η αλλαγή τους. Εάν εμφανίστηκε ένα μήνυμα σφάλματος στο πρόγραμμα περιήγησης, τότε οι κεφαλίδες έχουν ήδη αποσταλεί και η χρήση της κεφαλίδας θα προκαλέσει σφάλμα. Για να ελέγξετε εάν οι κεφαλίδες έχουν ήδη αποσταλεί χρησιμοποιήστε headers_sent.

Η περιγραφόμενη μέθοδος λειτουργεί μόνο όταν το σενάριο PHP δημιουργεί πλήρως το περιεχόμενο της σελίδας. Οι στατικές σελίδες (όπως η html) θα πρέπει να αποθηκεύονται σε κωδικοποίηση utf-8. Οι περισσότεροι διακομιστές ιστού θα δώσουν προσοχή στην κωδικοποίηση του αρχείου και θα προσθέσουν την κατάλληλη κεφαλίδα. Στην πραγματικότητα, εξοικονόμηση αρχείο PHPστην κωδικοποίηση utf-8 θα παράγει το ίδιο αποτέλεσμα.

Εσφαλμένη κωδικοποίηση των αποτελεσμάτων από τη βάση δεδομένων MySQL

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

Πρέπει να ξεκινήσετε ορίζοντας την κωδικοποίηση των πινάκων σας. Μπορεί να προβληθεί σε phpMyAdmin:

Προσοχή στη στήλη " Σύγκριση", Η είσοδος" utf8_unicode_ci"Σημαίνει ότι χρησιμοποιείται η κωδικοποίηση UTF-8.

Μπορείτε να συνδεθείτε στο MySQL DBMS και να ελέγξετε την κωδικοποίηση πίνακα χωρίς phpMyAdmin. Για αυτό:

Mysql -u root -p

Εάν ξεχάσατε το όνομα της βάσης δεδομένων, τότε εκτελέστε την εντολή:

ΕΜΦΑΝΙΣΗ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ.

Ας υποθέσουμε ότι θέλω να κοιτάξω την κωδικοποίηση των πινάκων στη βάση δεδομένων information_schema

USE information_schema;

Εάν ξεχάσατε το όνομα των τραπεζιών, εκτελέστε:

ΕΜΦΑΝΙΣΗ ΠΛΗΡΗΣ ΣΤΗΛΩΝ ΑΠΟ το όνομα_του πίνακα.

Για παράδειγμα:

ΕΜΦΑΝΙΣΗ ΠΛΗΡΗΣ ΣΤΗΛΩΝ ΑΠΟ GLOBAL_STATUS.

Θα δείτε κάτι σαν το εξής:

Βλέπε στήλη Αντιπαραβολή... Στην περίπτωσή μου, εκεί utf8_general_ci, είναι σαν utf8_unicode_ci, κωδικοποίηση UTF-8... Παρεμπιπτόντως, αν δεν ξέρετε ποια είναι η διαφορά μεταξύ των κωδικοποιήσεων utf8_general_ci, utf8_unicode_ci, utf8mb4_general_ci, utf8mb4_unicode_ci, καθώς και ποια κωδικοποίηση να επιλέξετε για τη βάση Δεδομένα MySQLτότε ρίξτε μια ματιά.

Τώρα που μάθαμε την κωδικοποίηση (στην περίπτωσή μου είναι UTF-8), τότε κάθε φορά που συνδέεστε στο MySQL DBMS, πρέπει να εκτελείτε διαδοχικά ερωτήματα:

ΣΕΤ ΟΝΟΜΑΤΩΝ UTF8 ΣΕΤ ΣΕΤ ΧΑΡΑΚΤΗΡΑ UTF8 SET character_set_client = UTF8 SET character_set_connection = UTF8 SET character_set_results = UTF8

Στην PHP, μπορεί να γίνει ως εξής:

$ this-> mysqli = νέο mysqli (διακομιστής $, όνομα χρήστη $, κωδικός πρόσβασης $, όνομα βάσης $); if ($ this-> mysqli-> connect_error) ($ this-> errorHandler_c-> logError (1, "Σφάλμα σύνδεσης (". $ this-> mysqli-> connect_errno. ")". $ this-> mysqli-> connect_error , $ _SERVER ["REQUEST_URI"]);) $ this-> mysqli-> ερώτημα ("SET NAMES UTF8"); $ this-> mysqli-> ερώτημα ("SET CHARACTER SET UTF8"); $ this-> mysqli-> ερώτημα ("SET character_set_client = UTF8"); $ this-> mysqli-> ερώτημα ("SET character_set_connection = UTF8"); $ this-> mysqli-> ερώτημα ("SET character_set_results = UTF8");

σημειώστε ότι UTF8πρέπει να αντικαταστήσετε με οποιαδήποτε κωδικοποίηση χρησιμοποιείται για τους πίνακες σας.

Αλλαγή κωδικοποίησης αρχείου

Εάν αποφασίσετε να ακολουθήσετε την αντίθετη κατεύθυνση και να αλλάξετε την κωδικοποίηση των αρχείων σας αντί να εγκαταστήσετε μια νέα κωδικοποίηση, τότε ανατρέξτε στο άρθρο "". Περιγράφει πώς μπορείτε να μάθετε την τρέχουσα κωδικοποίηση αρχείων και πώς να μετατρέψετε αρχεία σε οποιαδήποτε κωδικοποίηση (όχι μόνο UTF-8).

Πώς να μάθετε τι κωδικοποίηση στέλνει ο διακομιστής

Εάν θέλετε να μάθετε ποιες ρυθμίσεις κωδικοποίησης έχει ο διακομιστής web (τι κωδικοποίηση μεταδίδεται σε κεφαλίδες), χρησιμοποιήστε την ακόλουθη εντολή:

Curl URL -s -o / dev / null -D / dev / stdout | grep -E "σύνολο χαρακτήρων"

Αντί Urlεισάγετε την πραγματική διεύθυνση του επιλεγμένου ιστότοπου. Εάν ο ιστότοπος χρησιμοποιεί HTTPS, τότε καθορίστε τη διεύθυνση τοποθεσίας μαζί με το πρωτόκολλο, για παράδειγμα

Curl https://softocracy.ru -s -o / dev / null -D / dev / stdout | grep -E "σύνολο χαρακτήρων"

Ποια κωδικοποίηση να επιλέξετε για έναν ιστότοπο

Μια τεράστια συλλογή από πρώτης κατηγορίας πορνό βίντεο είναι έτοιμη να σας ανοίξει τις πόρτες σε έναν φανταστικό κόσμο απόλαυσης. Το Pornhub.com έχει γίνει διάσημο για την αξεπέραστη ποιότητα των προσφερόμενων υπηρεσιών, οπότε όταν επιλέγετε τον ιστότοπό μας, να είστε βέβαιοι ότι όλα είναι μελετημένα μέχρι την παραμικρή λεπτομέρεια. Μια πληθώρα διαφορετικών κατηγοριών θα ενθουσιάσει κάθε επισκέπτη, είτε είναι έμπειρος θεατής είτε αρχάριος. Το υλικό που παρουσιάζεται έχει επιλεγεί με ιδιαίτερη προσοχή, έτσι κάθε λάτρης του pornhub.com θα μπορεί να βυθιστεί σε μια αξέχαστη ερωτική ατμόσφαιρα. Στο κατώφλι της απόλαυσης, θα σας υποδεχτούν πορνοστάρ που είναι έτοιμοι να προσφέρουν τα καλύτερα βίντεο... Σε αυτά, οι επαγγελματίες του σώματός τους επιδεικνύουν το καυτό σεξ σε όλες τις εκφάνσεις του. Οι λάτρεις του συναρπαστικού σπιτικού πορνό επίσης δεν θα μείνουν έξω. Το Pornhub παρουσιάζει μια τεράστια συλλογή από σκηνές με αξιολάτρευτα κορίτσια που είναι έτοιμα να καταπλήξουν με τις ταλαντούχες σεξουαλικές τους ικανότητες. Δεν έχουν στόχο να δράσουν επαγγελματικά βίντεο, αλλά οι ικανότητές τους μπορούν εύκολα να ανταγωνιστούν τον πορνοστάρ. Οι λάτρεις των εξωτικών θα εκπλαγούν ευχάριστα από το πλήθος των πλάνα με μουλάτο, Ασιάτες και μαύρες γυναίκες. Αρκεί να σκεφτεί κανείς κάτι, πώς οι υπάκουες ιέρειες της αγάπης θα εκπληρώσουν αμέσως τις αγαπημένες σας φαντασιώσεις με τον καλύτερο δυνατό τρόπο. Να είστε αληθινοί με τον εαυτό σας, αλλά μην ξεχνάτε να χαλαρώνετε, εμπιστευόμενοι έμπειρες νύμφες που ξέρουν πολλά για τα καλά γαμημένα και ικανοποιητικά αρσενικά καπρίτσια. Μερικές φορές εμείς οι ίδιοι δεν μπορούμε να καταλάβουμε τι χρειαζόμαστε, αλλά το όφελος του pornhub είναι ένα μέρος όπου τέτοιες ερωτήσεις απλά δεν προκύπτουν.

Σας προσκαλούμε να χαλαρώσετε στο περιβάλλον που ταιριάζει καλύτερα στη διάθεσή σας σήμερα. Ίσως τώρα να είστε ικανοποιημένοι με ένα τρελό ομαδικό σεξ, αλλά αύριο οι επιθυμίες σας θα είναι ριζικά διαφορετικές και η επιλογή θα πέσει στο ρομαντικό σεξ με ένα χαριτωμένο μοντέλο. Όλα αυτά και πολλά άλλα μπορείτε να τα βρείτε εδώ, καθώς το pornhub αφήνει την επιλογή σε εσάς. Δεν χρειάζεται να προσαρμόσετε τις ιδιοτροπίες σας στις δυνατότητες του ιστότοπου, αφού έχουμε όλα όσα χρειάζεται ένας γνώστης του καλού πορνό. Ως οδηγοί στον κόσμο της σεξουαλικής ικανοποίησης, έχουμε μάθει όλες τις αποχρώσεις της παροχής υπηρεσιών υψηλής ποιότητας, οπότε αν ψάχνετε για το τέλειο μέρος για να διασκεδάσετε, τότε αξίζει να σημειώσετε ότι έχετε έρθει στο σωστό μέρος. Εάν έχετε συγκεκριμένους στόχους, τότε μη διστάσετε να τους εφαρμόσετε, βρίσκοντας τις σελίδες των αγαπημένων σας πορνό βίντεο. Σε περίπτωση που ήρθατε για κάτι καινούργιο, τότε σας προτείνουμε να εξοικειωθείτε με το φρεσκοψημένο υλικό.

Εγγυόμαστε σε κάθε θεατή μια αντάξια ικανοποίηση και ένα υπέροχο χόμπι. Το Pornhub ανοίγει τις πόρτες του για να σας παρέχει μόνο τα καλύτερα βίντεο. Δεν χρειάζεται πλέον να κάνετε άσκοπες αναζητήσεις στον εαυτό σας, αφού όλα έχουν ήδη γίνει για εσάς. Όπου, αν όχι εδώ, μπορείτε να περιποιηθείτε τον εαυτό σας με μια ποικιλία από οικόπεδα και την εξαιρετική ποιότητα της πραγματοποίησης των αγαπημένων σας επιθυμιών. Σας προσφέρουμε όχι μια μονοήμερη περιήγηση, αλλά τη δυνατότητα απεριόριστων ταξιδιών στη χώρα του πόθου και της αποχαύνωσης. Εδώ, κάθε επισκέπτης περιμένει ό,τι χρειάζεστε και έστω και λίγο παραπάνω.

Αλλά πρώτα θέλω να εκφράσω την ευγνωμοσύνη μου στον Sergey Volkov και τον Denis Sharomov, των οποίων τα υλικά βοήθησαν στην προετοιμασία αυτού του άρθρου.

Προσοχή! Είναι απαραίτητο να επεξεργαστείτε αρχεία ιστότοπου μέσω ftp ή ssh.

Τώρα ας ξεκινήσουμε.

1. Φτιάξτε αντιγράφων ασφαλείαςκαι φροντίστε να συμπεριλάβετε τη βάση δεδομένων και όλα τα αρχεία του ιστότοπου σε αυτήν.

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

mbstring.func_overload 2
mbstring.internal_encoding UTF-8
Εάν χρησιμοποιείτε εικονική μηχανή Bitrix, μπορείτε να τα εγκαταστήσετε μόνοι σας.

3. Καταργήστε τις λειτουργικές μονάδες "Αναζήτηση" χωρίς αποθήκευση πινάκων και το "Web Analytics" (χωρίς αποθήκευση πινάκων, αλλά διατήρηση προτύπων μηνυμάτων).

4. Καταργήστε τη μεταγραφή από το λεξικό στην ενότητα "Φόρουμ" ( Υπηρεσίες> Φόρουμ> Φίλτρο βωμολοχιών> Λεξικό μεταγραφής) το γράμμα "ё", που έχει ID = 7.

5. Αλλάξτε την κωδικοποίηση από windows-1251 σε utf-8 στις τοπικές ρυθμίσεις.


Η κατάλληλη τοπική ρύθμιση πρέπει να επιλεγεί στις ρυθμίσεις τοποθεσίας.

6. Προσθήκη στο /bitrix/php_interface/dbconn.php:

define ("BX_UTF", true);

7. Φορτώστε το σενάριο convert_utf8.php στον ριζικό κατάλογο του ιστότοπου, εκτελέστε το και περιμένετε να ολοκληρωθεί.
Το πρώτο βήμα είναι να ελέγξετε τα δικαιώματα για την αλλαγή αρχείων, το δεύτερο είναι να μετατρέψετε όλα τα αρχεία του ιστότοπου και το τελευταίο να αλλάξετε την κωδικοποίηση της βάσης δεδομένων.
Εάν έχετε μια πολύ μεγάλη βάση δεδομένων, η μετατροπή της μπορεί να διαρκέσει πολύ πολύς καιρόςή καθόλου. Σε αυτήν την περίπτωση, αλλάξτε την κωδικοποίηση της βάσης δεδομένων με μη αυτόματο τρόπο ως εξής. Στον πίνακα διαχειριστή στη σελίδα "ερώτημα SQL", εκτελέστε το ακόλουθο ερώτημα:


Όπου database_name είναι το όνομα της βάσης δεδομένων σας.
Αυτό το αίτημα θα εμφανίσει ένα νέο αίτημα στη σελίδα, το οποίο θα πρέπει να εκτελεστεί στην ίδια σελίδα:


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

8. Προσθήκη στο /bitrix/php_interface/after_connect.php:

$ DB-> Ερώτημα ("SET NAMES" utf8 ""); $ DB-> Ερώτημα ("SET collation_connection =" utf8_unicode_ci "");

9. Προσθήκη στο /bitrix/php_interface/after_connect_d7.php:
$ connection-> queryExecute ("SET NAMES" utf8 ""); $ connection-> queryExecute ("SET collation_connection =" utf8_unicode_ci "");

10. Πληκτρολογήστε /bitrix/.settings.php:
πίνακας επιστροφής ("utf_mode" => πίνακας ("value" => true, "readonly" => true,),

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

12. Καταργήστε τη δέσμη ενεργειών convert_utf8.php.

13. Εγκαταστήστε τη λειτουργική μονάδα "Αναζήτηση" και δημιουργήστε ξανά ευρετήριο.

14. Εγκαταστήστε τη λειτουργική μονάδα "Web Analytics" εάν την έχετε χρησιμοποιήσει στο παρελθόν.

Ετοιμος!

Μετά τη μετατροπή του ιστότοπου, ενδέχεται να υπάρχουν προβλήματα με σειριακούς πίνακες (κυρίως, αυτές είναι ιδιότητες κειμένου Html και ρυθμίσεις εμφάνισης για χρήστες στον πίνακα διαχείρισης). Σε αυτή την περίπτωση, θα σας βοηθήσει