it-swarm-eu.dev

htmlspecialchars in search

Při vyhledávání na mém webu se zobrazí tato chyba:

Upozornění: htmlspecialchars (): Neplatná vícebajtová sekvence v argumentu v check_plain () (řádek 1476 z /var/www/includes/bootstrap.inc).

Co to znamená a jak to mohu opravit?

ÚPRAVA: Problém zmizel po migraci na webhostingový server, takže problém by měl být v nastavení v mém místním počítači.

5
xralf

Problém je způsoben vyhledávacím modulem. Nezpracovává správně vícebajtové znaky. Sledujte toto vlákno: http://drupal.org/node/987472 Oprava problému s vyhledávacím modulem mě vyřešila. Počkejte však na autorizovanou opravu.

Váš webhoster neukazuje chybu ne proto, že tam není, ale proto, že mají lepší nastavení výroby. Tuto chybu lze snadno potlačit pomocí nastavení PHP).

1
Floop

Zkuste přidat nějaké vybavení nahrazením funkce check_plain touto verzí:

function check_plain($text) {
  $plain = htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
  if (empty($plain) && !empty($text)) {
    dpm($text);
    ddebug_backtrace();
  }
}

Budete muset mít aktivovaný modul devel . Při příštím spuštění chyby bude zobrazen urážlivý text spolu s backtrace, které ukazuje, která funkce spustila chybu. Díky těmto informacím můžete v kódu a databázi vyhledat urážlivý text a odstranit jej.

2
Dylan Tack

Divoké hádání, ale mám podezření, že něco není UTF-8 čisté.

check_plain je pevně zakódován pro UTF-8. Mám podezření, že jste součástí převodu, je v ISO-8859-1.

Sledujte přenos pomocí živých hlaviček HTTP. Pokud v požadavcích nebo odpovědích vidíte něco jiného než UTF-8, musíte vyladit některá nastavení Drupalu.

1
mpdonadio

To se mi stalo, protože jsem nechal nějaký Unicode (é, ó ...) v souboru šablony nebo modulu, nezapomeňte to zkontrolovat. Obecně je třeba použít funkci t() a poté přeložit svůj řetězec do překladového rozhraní admin/build/translate.
Pokud to nemůžete udělat, můžete použít utf8_encode('é'), ale to není moc hezké.

1
tostinni