Domanda

Ho un server di backup che esegue automaticamente il backup del mio sito live, sia file che database.

Sul sito live, il testo sembra a posto, ma quando si visualizza la versione speculare di esso, viene visualizzato '?' all'interno del testo. Questo testo è archiviato nella tabella del database delle notizie.

Ecco una schermata del suo essere sul server live e di quello sul server con mirroring.

Cosa potrebbe accadere durante il processo di backup sul server con mirroring? alt text

È stato utile?

Soluzione

I seguenti articoli saranno utili

http://dev.mysql.com/doc/ refman / 5.0 / en / charset-syntax.html

http://dev.mysql.com/doc/ refman / 5.0 / en / charset-connection.html

Dopo la connessione al database, immettere il seguente comando:

SET NAMES 'utf8';

Assicurati che la tua pagina web usi anche la codifica UTF-8:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

PHP offre anche diverse funzioni che saranno utili per le conversioni:

http://us3.php.net/manual/en/function. iconv.php

http://us.php.net/mb_convert_encoding

Altri suggerimenti

Modifica il tuo file di configurazione di Apache sul " mirror " server (il server con il problema) e commentare la seguente riga:

AddDefaultCharset UTF-8

Quindi riavviare Apache:

service httpd restart

Il problema è che " AddDefaultCharset UTF-8 " line sostituisce il Tipo di contenuto specificato nei file .html; per esempio:.

<meta http-equiv=Content-Type content="text/html; charset=windows-1252">

Il sintomo più comune è che i codici carattere sopra 127 vengano visualizzati come diamanti neri con punti interrogativi (in Chrome, Safari o Firefox) o come piccole scatole (in IE e Opera). I file HTML generati da Microsoft Word di solito hanno molti di questi caratteri, il più comune è il codice carattere 160 = 0xA0, che equivale a & Quot; & Amp; nbsp; & Quot; nella codifica Windows-1252 e spesso si trova tra i tag span, in questo modo:

<span style="mso-spacerun: yes">ááá </span>

Sono arrivato qui alla ricerca di una soluzione per JavaScript visualizzata nel browser e sebbene non direttamente correlata a un database ...

Nel mio caso ho copiato e incollato del testo che ho trovato su Internet in un file JavaScript e l'ho salvato con Blocco note di Windows.

Quando la pagina che utilizza quel file JavaScript produceva le stringhe c'erano dei punti interrogativi (come quelli mostrati nella domanda) invece dei caratteri speciali come lettere accentate, ecc.

Ho aperto il file usando Notepad++ . Subito dopo aver aperto il file ho visto che la codifica dei caratteri era impostata su ANSI come puoi vedere (cursore del mouse sul piè di pagina) nel seguente screenshot:

inserisci qui la descrizione dell'immagine

Per risolvere il problema, fai clic sul menu Encoding in Encode in UTF-8 e seleziona <=>. Dovresti essere bravo ad andare. :)

Il tuo browser non ha interpretato correttamente la codifica della pagina (o perché l'hai forzata a una determinata impostazione o la pagina è impostata in modo errato) e quindi non è possibile visualizzare alcuni caratteri.

Questo avrà a che fare con la codifica dei caratteri.

Sei sicuro che il sito con mirroring abbia le stesse proprietà per quanto riguarda le codifiche dei caratteri del tuo server principale?

A seconda del tipo di server in uso, questa potrebbe essere una proprietà del processo server stesso o potrebbe essere una variabile di ambiente.

Ad esempio, se si tratta di un ambiente UNIX, forse provare a confrontare LANG o LC_ALL?

Vedi anche qui

Controlla il set di caratteri emesso dal tuo server di mirroring. Sembra che ci sia una differenza rispetto al server principale: il sito live sembra emettere Unicode, dove il mirror non lo è. Inoltre, di solito è una buona idea cancellare i caratteri Unicode nel contenuto in arrivo e sostituirli con le entità HTML appropriate.

Il tuo problema specifico riguarda " virgolette intelligenti, " " em trattini " e " en trattini. " So che puoi sostituire i trattini con &mdash; e i trattini con &ndash; (che dovrebbe essere fatto sul lato di input del tuo database); Non so quale sarebbe la sostituzione corretta per le virgolette intelligenti. (Di solito sostituisco solo tutte le virgolette singole ricci con "e tutte le virgolette doppie ricci con & Quot; ... I geek tipografici possono sentirsi liberi di spararmi a vista.)

Dovrei notare che alcuni browser perdonano più di altri con questo problema: Internet Explorer su Windows tende a rilevare automaticamente e " fix " Questo; Firefox e la maggior parte degli altri browser visualizzano i punti interrogativi.

Di solito maledico MS Word e quindi eseguo il seguente Wscript.

// sostituisci con il percorso di un file che deve essere pulito
PERCORSO = & Quot; test.html & Quot;

var go = WScript.CreateObject (" Scripting.FileSystemObject ");
var content = go.GetFile (PATH) .OpenAsTextStream (). ReadAll ();
var out = go.CreateTextFile (" clean - " + PATH, true);

// simboli
content = content.replace (& / # 8220; / g, 'quot &;');
content = content.replace (& / # 8221; / g, 'quot &;');
content = content.replace (/ # 8217 &; & / g, quot; 'quot &;);
content = content.replace (& / # 8211; / g, quot &; - quot &;);
content = content.replace (/ # 169 &; / g, quot &; & amp; copiare; quot &;);
content = content.replace (& / # 174; / g, quot &; & amp; reg; quot &;);
content = content.replace (/ # 176 &; / g, quot &; & amp; deg; quot &;);
content = content.replace (/ # 182 &; / g, Prev &; lt &; p gt &; quot &;);
content = content.replace (& / # 191; / g, quot &; & amp; iQuest; quot &;);
content = content.replace (& / # 161; / g, 'amp &; iexcl;');
content = content.replace (& / # 162; / g, 'amp &; cento;');
content = content.replace (& / # 163; / g, 'amp &; libbra;');
content = content.replace (& / # 165; / g, 'amp &; yen;');

out.write (tenore);

Unicode o altri caratteri del set di caratteri che cadono?

Ho visto simili " strano " i personaggi vengono visualizzati su siti su cui ho lavorato spesso quando il testo viene copiato da un'e-mail o da un altro formato di documento (ad esempio word) in un editor di testo. L'editor può visualizzare i caratteri non ASCII ma il browser no. Per il sito web, suggerirei di cercare il codice entità HTML per il carattere e di inserirlo invece ... o passare a quelli più standard.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top