Compartilhar no Facebook mostra o caracter inválido UTF8

Tento compartilhar posts do meu site.
A coisa é o famoso ponto de interrogação que o diamante aparece em alguns dos posts descrição.
Todo o OG Meta parece ser bom (usando o Yoast SEO), é “apenas” o texto na publicação compartilhada que possui esse sinal .
Eu entendo que provavelmente é devido a algum arquivo não codificado no utf-8.
Eu adicionei default_charset = UTF-8 ao meu arquivo .ini mas não altero.
O content-type também está configurado corretamente para utf-8
Eu também fiz uma verificação de validação no validador w3 e não encontrei nada relacionado

O site mostra-se bem com personagens estranhos, só quando tenta compartilhar um post no Facebook.
Como posso encontrar a fonte para a codificação errada?

Solutions Collecting From Web of "Compartilhar no Facebook mostra o caracter inválido UTF8"

Acho que não é um problema na sua instalação WP. O site funciona como codificação UTF-8, também sua alimentação, etc.

Validando

Para uma validação de strings deve usar a function PHP mb_check_encoding . Um pequeno script deve verificar suas tabelas de database, o conteúdo para que você tenha comentários sobre seus dados dentro das tabelas do database.

Além disso, o libraray tchwork-grekas / utf8 é útil, para encontrar problemas também corrigem as cordas erradas.

Corrija-os através de script personalizado

No entanto, se você apenas pesquisar no seu database, a pesquisa através de um plug-in para uma string deve ajudá-lo. Alternativa é um script personalizado, que controla e corrige. Acho que a biblioteca do forceutf8 é útil. O método fixUTF8 seus problemas, se você tiver dentro de seus dados.

Alternativa também é a biblioteca Patchwork-UTF8 no primeiro resumo, veja acima.

Colocação da tabela mySQL

Antes de verificar a sorting de todas as tabelas. Você verifica sua codificação observando o valor de Agrupamento na saída de SHOW TABLE STATUS (em phpMyAdmin ou Adminer, isso é mostrado na lista de tabelas).

 SHOW TABLE STATUS FROM  

Variável mySQL

Você também pode verificar cada variável, executar o comando seguir mysql em seu database para verificar se tudo foi configurado corretamente para usar a codificação UTF-8.

 SHOW VARIABLES LIKE 'char%'; 

Converter

Converta a tabela para InnoDB e utf8mb4, a tabela de posts

 ALTER TABLE wp_posts ENGINE=InnoDB ROW_FORMAT=DYNAMIC; ALTER TABLE wp_posts CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 

WP Config

Verifique o wp-config.php utf8mb4 é a sua escolha desde o WordPress 4.2, suporte completo da UTF-8.

 define( 'DB_CHARSET', 'utf8mb4' ); 

Links

  • Postagem útil sobre mudar de uma base de dados NonUTF-8 para UTF-8 para mais detalhes no fundo.
  • Resolvendo questões PHP MySQL UTF-8

Eu encontrei o problema.
UTF8 pode produzir uma string multibyte (quando usar caracteres hebraicos, por exemplo).
O Facebook trunca essa string, uma publicação é compartilhada para manter a descrição abaixo do número máximo de caracteres.
No entanto, eles podem truncar um caractere multibyte no meio que resultará em caracteres UTF8 inválidos:
Esse problema realmente se reproduz em todos os sites multibyte.
A única solução que encontrei é limitar o og:description para o número máximo de caracteres do Facebook (cerca de 110 no comentário e 300 no post) Eu enviei um erro na plataforma do Facebook OpenGraph e espero que ele seja corrigido em breve.