Кодирането на моя уебсайт е ISO-8859-1. ISO-8859-1 се определя като набор от символи в уеб страниците и резултатите от търсенето с Google винаги са изглеждали добре.
От няколко седмици обаче специалните знаци (é, à, è, â и др.) Се заменят с � в резултатите от търсенето с Google, както за заглавия на страници, така и за описания на страници.
Кодировката е дефинирана на всяка страница: И уебсайтът изглежда добре с всички уеб браузъри, няма грешки в кодирането.
Досега виждам, че френските диакритични знаци не са част от ISO-8859-1 (освен апострофа). Версията на кеша на Google не съдържа тези знаци.
Виждам две решения:
- Кодирайте цялото съдържание като UTF-8 (бих бил по начина, по който предпочитам)
- Кодирайте диакритичните знаци като HTML обекти. Пример:
séries
ставаséries
. Това може да се направи в редактор като Notepad ++ и HTML Tag плъгин. Това е куп ръчна работа - не бих го направил.
BTW. имате страница https://www.hypnoweb.net/www/, която отразява началната страница - не е добре.
- 2 френски диакритични знака са част от ISO-8859-1. Не трябва да има нужда да се използват обекти за тях за този набор от знаци. Единствените френски символи, които не са обхванати от ISO-8859-1, са Œ, œ и много редки Ÿ. Също така липсват често използваните знаци са знакът евро (€), елипси (...), неразбиващо се интервал () и различни стрелки (→). ISO-8859-15 би бил по-добър избор за френски от ISO-8859-1, тъй като включва липсващите френски символи и символа за евро. UTF-8 би бил още по-добър.
- Добър момент, знаците не присъстват във версията на кеша на Google. Тъй като не мога лесно да премина към UTF-8, ще актуализирам своя PHP скрипт, за да кодирам специални символи в HTML обекти. Ще започна с заглавията на страниците, да видим дали ще помогне!
- Получи се, просто трябваше да кодирам като HTML обекти! Благодаря!
Google се обърква, защото докато страницата е ISO-8859-1, част от съдържанието се зарежда в страницата в UTF-8. Това кара Googlebot да прекодира съдържанието на страницата със съдържание като UTF-8, за да може да го обработи. По време на този процес нещо се обърква и героите се изкривяват.
Например използвате JavaScript библиотека за съгласие за бисквитки. Той зарежда UTF-8 кодиран текст и го записва на страницата.
В идеалния случай Google би могъл да се справи с тази ситуация, без да разваля героите. Свързах се с Google за това и в техния край е подадена грешка. Въпреки това, някои други сайтове, които се прекодират, работят. Каквото и да се случва с вашия сайт, не засяга много други сайтове, така че може да е по-нисък приоритет за Google.
Като заобиколно решение можете да се уверите, че вашата страница и JavaScript използват един и същ набор от символи. Тъй като нямате контрол върху библиотеки на трети страни, които използват UTF-8 и не могат да ги конвертират в ISO-8859-1, ще трябва да конвертирате сайта си в UTF-8.
Като цяло днес няма основателна причина да се използва ISO-8859-1. Този набор от символи поддържа само 256 знака. UTF-8 не прави размера на страницата значително по-голям и поддържа всички символи на Unicode:
- Допълнителните френски символи Œ, œ и Ÿ
- Знакът евро (€), елипси (...), неразбиващо се пространство ()
- Забавни герои като стрелки и емотикони
Използването на UTF-8 ви позволява да поддържате генерирано от потребителите съдържание от всеки език. Най-малкото позволява на имената на потребителите да се пишат правилно, независимо от техния национален произход.
- Благодаря много за вашия подробен отговор, да се надяваме, че някой ден Google ще го поправи ... Бих искал да мигрирам към UTF-8 (и към поддържана версия на PHP), но кодовата база е объркана. Ако някой ме прочете и търси ново предизвикателство, уведомете ме ;-)
- 1 Чудя се, защо този въпрос е абсолютно рядко срещан. В немскоговорящата мрежа има много уебсайтове, които все още използват ISO-8859-1 - и от една година е задължително да включите банери за бисквитки,
cookieconsent
от вашия анализ е доста популярно решение за банер за бисквитки. С тази настройка трябва да има около всеки десети уебсайт в немскоговоряща мрежа, объркан от този вид ... - 1 Мисля, че има нещо повече от просто скрипт за съгласие за бисквитки. Джон Мюлер каза, че много други сайтове работят добре. Той каза, че това по някакъв начин е свързано с вмъкването на UTF-8 в ISO-8859-1 и "прекодирането", което трябва да се случи, за да се справи с това. Нямам повече информация или добро предложение как да диагностицирам проблема по-нататък.
- Всъщност проблемът се появи няколко дни след като смених PHP редактора си от phpEd на PhpStorm. Първоначално мислех, че проблемът може да идва от файловете, кодиращи в PhpStorm: Използвах ISO-8859-1, а в phpEd използвах windows-1252. Опитах се да премина към windows-1252 в PhpStorm, но не реши проблема. Възможно ли е един от моите PHP файлове да е кодиран погрешно, например в UTF-8. Има ли начин да се открие това?
- 1 Може да съм открил проблема, имам PHP файл с charset = unknown-8bit, включен във всичките ми страници. Ще се опитам да намеря как да поправя това ...