Question

J'ai un serveur de sauvegarde qui sauvegarde automatiquement mon site actif, les fichiers et la base de données.

Sur le site actif, le texte semble correct, mais lorsque vous affichez la version en miroir de celui-ci, il affiche "?" dans une partie du texte. Ce texte est stocké dans la table de la base de données de nouvelles.

Voici une capture d’écran montrant son emplacement sur le serveur en direct et celle sur le serveur en miroir.

Que peut-il se passer dans le processus de sauvegarde sur le serveur en miroir? alt text

Était-ce utile?

La solution

Les articles suivants seront utiles

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

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

Après vous être connecté à la base de données, exécutez la commande suivante:

SET NOMS 'utf8';

Assurez-vous que votre page Web utilise également le codage UTF-8:

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

PHP propose également plusieurs fonctions utiles pour les conversions:

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

http://us.php.net/mb_convert_encoding

Autres conseils

Modifiez votre fichier de configuration Apache sur le " miroir " serveur (le serveur avec le problème), et commentez la ligne suivante:

AddDefaultCharset UTF-8

Redémarrez ensuite Apache:

service httpd restart

Le problème est que le " AddDefaultCharset UTF-8 " line remplace le Content-Type spécifié dans les fichiers .html; par exemple:

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

Le symptôme le plus courant est que les codes de caractère supérieurs à 127 s'affichent sous forme de losanges noirs avec des points d'interrogation (sous Chrome, Safari ou Firefox) ou sous forme de petites cases (sous IE et Opera). Les fichiers HTML générés par Microsoft Word comportent généralement de nombreux caractères de ce type, le plus courant étant le code de caractère 160 = 0xA0, ce qui équivaut à & Quot; & Amp; nbsp; & Quot; dans l'encodage Windows-1252, et se trouve souvent entre les balises span, comme ceci:

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

Je suis arrivé ici à la recherche d'une solution pour JavaScript affichée dans le navigateur et qui n'est pas directement liée à une base de données ...

Dans mon cas, j'ai copié et collé du texte trouvé sur Internet dans un fichier JavaScript et je l'ai enregistré avec le Bloc-notes Windows.

Lorsque la page qui utilise ce fichier JavaScript affiche les chaînes, des points d'interrogation (tels que ceux indiqués dans la question) ont été créés à la place des caractères spéciaux tels que les lettres accentuées, etc.

J'ai ouvert le fichier à l'aide de Notepad++ . Juste après l'ouverture du fichier, j'ai constaté que le codage des caractères était défini sur ANSI comme vous pouvez le voir (curseur de la souris sur le pied de page) dans la capture d'écran suivante:

entrer la description de l'image ici

Pour résoudre le problème, cliquez sur le menu Encoding dans Encode in UTF-8 et sélectionnez <=>. Vous devriez être prêt à partir. :)

Votre navigateur n'a pas interprété correctement le codage de la page (soit parce que vous l'avez forcé à un paramètre particulier, soit que la page est mal définie) et ne peut donc pas afficher certains caractères.

Cela va avoir quelque chose à voir avec les encodages de caractères.

Êtes-vous sûr que le site en miroir possède les mêmes propriétés en termes de codage de caractères que votre serveur principal?

Selon votre type de serveur, il peut s’agir d’une propriété du processus serveur lui-même ou d’une variable d’environnement.

Par exemple, s'il s'agit d'un environnement UNIX, essayez peut-être de comparer LANG ou LC_ALL?

Voir aussi ici

Vérifiez le jeu de caractères émis par votre serveur en miroir. Il semble y avoir une différence par rapport au serveur principal: le site actif semble émettre en Unicode, alors que le miroir ne l’est pas. En outre, il est généralement recommandé de supprimer les caractères Unicode de votre contenu entrant et de les remplacer par les entités HTML appropriées.

Votre problème spécifique concerne " citations intelligentes, " " em dash " et " en des tirets. " Je sais que vous pouvez remplacer les tirets avec &mdash; et les tirets avec &ndash; (ce qui devrait être fait du côté entrée de votre base de données); Je ne sais pas ce que le remplacement correct pour les citations intelligentes serait. (Je remplace généralement toutes les guillemets simples bouclés par 'et tous les guillemets doubles bouclés par & "; ... Les geeks de la typographie peuvent se sentir libre de me tirer dessus à vue.)

Je dois noter que certains navigateurs sont plus indulgents que d’autres avec ce problème - Internet Explorer sous Windows a tendance à détecter automatiquement et par magie & "corriger &"; ce; Firefox et la plupart des autres navigateurs affichent les points d'interrogation.

Je maudis habituellement MS Word, puis je lance le script Wscript suivant.

// remplace par le chemin d'accès à un fichier qui doit être nettoyé
PATH = & Quot; test.html & Quot;

var go = WScript.CreateObject (" Scripting.FileSystemObject ");
var content = go.GetFile (PATH) .OpenAsTextStream (). ReadAll ();

var out = go.CreateTextFile (& "nettoyer - &"; + CHEMIN, true);

// symboles
content = content.replace (/ & # 8220; / g, '"' ');
content = content.replace (/ & # 8221; / g, '"' ');
content = content.replace (/ & # 8217; / g, " '"));
content = content.replace (/ & # 8211; / g, " - "));
content = content.replace (/ & # 169; / g, " &; copy; ");
content = content.replace (/ & # 174; / g, " & amp; reg; ");
; content = content.replace (/ & # 176; / g, & "; &>; deg; &";;);
content = content.replace (/ & # 182; / g, & "; < p > &";);
content = content.replace (/ & # 191; / g, & "; &"; iquest; & ";;);
content = content.replace (/ & # 161; / g, '& amp; iexcl;');
content = content.replace (/ & # 162; / g, '& amp; cent;');
content = content.replace (/ & # 163; / g, '& amp; pound;');
content = content.replace (/ & # 165; / g, '& amp; yen;');

out.Write (content);

Les caractères Unicode ou autres jeux de caractères tombent?

J'ai vu de la même " étrange " les caractères apparaissent sur des sites sur lesquels j'ai souvent travaillé lorsque le texte est copié d'un courrier électronique ou d'un autre format de document (par exemple, Word) dans un éditeur de texte. L'éditeur peut afficher les caractères non ASCII, mais pas le navigateur. Pour le site Web, je suggérerais de rechercher le code d'entité HTML du caractère et de l'insérer à la place ... ou de passer à un code plus standard.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top