Caractere speciale în WordPress UTF-8

8 ian. 2012, 06:00:51
Vizualizări: 18.6K
Voturi: 5

Am o problemă legată de caracterele speciale care apar distorsionate pe front-end. În principal, acestea sunt convertite în semne de întrebare sau ceva similar cu �.

Exemplu - Frédèric devine Fr�d�ric.

Câteva detalii care m-au derutat:

  • Această instalare WordPress este pe calculatorul LOCAL și împărtășește serverul cu cel puțin 40 de alte instalări - niciuna dintre ele nu are această problemă.

  • Această instalare WordPress folosește aceeași bază de date ca și celelalte.

  • Fișierul meu wp-config are definit corect collate și charset.

  • Baza de date pare în regulă, deoarece când vizualizez postarea în EDITOR (back-end) - totul este corect, problema apare doar pe FRONT-end.

    • Baza de date pare în regulă (2), verificând direct valoarea în phpMyAdmin - toate caracterele sunt afișate corect.
  • Această problemă NU este legată de encoding-ul browserului/sistemului de operare, a fost verificat pe 4 calculatoare diferite, 3 sisteme de operare și 9 browsere.

Am încercat toate soluțiile pe care le cunosc din experiența anterioară, inclusiv:

  • Verificarea wp-config (este ok, utf-8 definit, collate ok)
  • Verificarea bazei de date - tot UTF-8
  • Verificarea header-ului (<?php bloginfo('charset'); ?>) - care se afișează corect ca utf-8 cu markup valid.
  • Deschiderea tuturor fișierelor de temă în editor, convertirea codării în UTF-8 fără BOM și salvarea.

Am omis ceva? Aveți idei?

11
Comentarii

Și fișierele tale sunt scrise/salvate în UTF-8 (Teme, Plugin-uri)?

kaiser kaiser
8 ian. 2012 07:23:06

da - am menționat deja în întrebarea în sine. UTF-8 fără BOM

User User
8 ian. 2012 07:23:44

Ai scris "Temă", nu plugin-uri. Ești sigur că ai dezactivat toate plugin-urile?

kaiser kaiser
8 ian. 2012 07:24:39

Nu. Nu am dezactivat niciun plugin, pentru că nu este instalat niciunul (ei bine, poate askimet sau hello dolly - dar nu sunt activate)

User User
8 ian. 2012 08:06:05

Singura situație în care am întâlnit ceva similar a fost cu rezultatele Google Geocoding, deoarece acestea sunt nedefinite. Soluția a fost să convertesc totul în utf-8 pe hook-ul pre_save.

kaiser kaiser
8 ian. 2012 17:33:27

De ce tag-ul htmlspecialchars-decode? Problema se întâmplă și cu TwentyEleven?

fuxia fuxia
8 ian. 2012 18:14:42

@ Kaiser - mulțumesc, am funcții legate de google.maps pe care le-am scris - .. o să mă uit peste ele - deși NICI UNA nu este de fapt apelată. @toscho - eticheta este pentru că S-ar putea să fie legată de o problemă în decodarea și codificarea caracterelor speciale html. și da, se întâmplă și cu TwentyEleven.

User User
9 ian. 2012 07:16:29

ACTUALIZARE - încă nu am nici o idee care este problema .. Dar am folosit mb_convert_encoding() din php. nu este ideal, desigur, și aș dori totuși să știu DE CE s-a întâmplat pentru a evita problemele viitoare, așa că dacă cineva are o idee/soluție - vă rog postați.

User User
17 ian. 2012 08:10:35

Salut @Obmerkronen, sună fascinant. Iată ce aș încerca dacă nu ai făcut-o deja: Rulează o instalare proaspătă de WordPress pe o bază de date nouă și verifică dacă caracterele UTF-8 funcționează. Dacă da, modifică wp-config.php să folosească baza de date a instalației tale, o vom numi "coruptă". Dacă instalația curată funcționează pe propria bază de date și nu funcționează pe baza de date "coruptă", știi că problema este în baza ta de date. Dacă instalația curată funcționează cu ambele, știi că sunt fișierele din instalația "coruptă". Dacă instalația proaspătă nu funcționează, cel mai probabil este o setare PHP sau MySQL (ceea ce este posibil chiar dacă alte instalații vechi funcționează). Spune-mi ce se întâmplă!

Matthew Boynes Matthew Boynes
30 ian. 2012 03:38:59

@ Matthew Boynes - mulțumesc pentru interesul tău! De fapt, am făcut deja această verificare când mă confruntam cu problema - pe o instalare curată avea aceeași patologie - chiar fără a schimba nimic și fără funcții suplimentare (decât cele pe care le-am scris - care sunt complet nelegate și inofensive... De atunci am trecut la un alt proiect, dar de îndată ce voi putea, voi încerca să înțeleg de ce s-a întâmplat asta!

User User
1 feb. 2012 08:18:18

Poate este vorba de serverul tău. Ai un fișier .htaccess pentru domeniul sau folderul în care este instalat WordPress?

Donald Jenkins Donald Jenkins
17 feb. 2012 02:06:27
Arată celelalte 6 comentarii
Toate răspunsurile la întrebare 2
3

Edit:

Aveți <meta charset="utf-8" /> în tag-ul <head>? Un utilizator aici a rezolvat o problemă similară legată de codificarea caracterelor prin adăugarea acestui meta tag.

Există de fapt multe rezultate pe Google care apar la căutarea pentru utf-8 character encoding in wordpress.

De asemenea, dacă lipiți textul în vizualizarea HTML a editorului și îl salvați, face vreo diferență?


Următoarea soluție nu este atât de bună, după cum a explicat @toscho în comentarii.

Nu sunt sigur dacă aceasta este cea mai bună metodă pentru a rezolva problema, dar aceasta a funcționat pentru unul dintre site-urile clienților mei.

Găsiți aceste două linii în fișierul wp-config.php:

define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');

Și comentați-le astfel:

//define('DB_CHARSET', 'utf8');
//define('DB_COLLATE', '');
20 feb. 2012 21:55:53
Comentarii

Acum riști să obții codificări salvate mixate. Nu este o idee bună.

fuxia fuxia
20 feb. 2012 22:24:33

@toscho Corect, caut pe internet o soluție mai bună și voi actualiza răspunsul meu în curând.

Jared Jared
20 feb. 2012 22:28:53

<meta charset="utf-8" />

Adăugarea acestui lucru a funcționat pentru mine.

Rahul Rahul
17 aug. 2017 10:46:10
0

Folosești htmlentities() pentru a evita output-ul din întâmplare? Dacă da, trebuie să definești 'UTF-8' ca al treilea parametru.

21 feb. 2012 22:48:41