$ _GET кодирование проблемы с кириллическим текстом

Я пробую этот код (на моем локальном веб-сервере)

<?php
echo 'the word is / думата е '.$_GET['word'];
?>

но я получаю поврежденный результат, когда входят? word=проба

the word is / думата е ����

Документ сохраняется как 'UTF-8 без BOM', и заголовками является также UTF-8. Я попробовал urlencode () и urldecode (), но эффект был тем же. Когда загрузка это на веб-сервере, хорошо работает...

5
задан casperOne 4 May 2012 в 20:19
поделиться

4 ответа

Что если вы попробуете отправить HTTP Content-type заголовок, чтобы указать браузеру, какую кодировку / charset генерирует ваша страница?

Например, что-то вроде этого может помочь :

header('Content-type: text/html; charset=UTF-8');
echo 'the word is / думата е '.$_GET['word'];

Конечно, это если вы генерируете HTML - скорее всего, так и есть.


Учитывая, что на уровне сервера есть конфигурационный параметр, определяющий, какая кодировка отправляется по умолчанию, возможно, кодировка по умолчанию на вашем сервере в порядке - а на вашем локальном сервере нет.

Отправка такого заголовка самостоятельно решит эту проблему: это позволит убедиться, что кодировка всегда установлена правильно.

3
ответ дан 14 December 2019 в 19:10
поделиться

Я полагаю, вы используете веб-сервер Apache.

Существует обычная проблема с конфигурацией Apache - строка с «AddDefaultCharset» в конфигурации должна быть закомментирована (добавьте # в начале строки или замените строку на «AddDefaultCharset off»), потому что она «переопределяет любые кодировка, указанная в файлах в мета-тегах кодирования http-Equ или xml ".

В моей текущей установке (Apache2 @ Ubuntu Linux) строка находится в «/etc/apache2/conf.d/charset», но в других (Linux / Unix) настройках может быть в «/ etc / apache2 / httpd. conf "или" /etc/apache/httpd.conf "(если вы используете Apache 1). Если вы не найдете его в этих файлах, вы можете найти его с помощью «cd / etc / apache2; grep -r AddDefaultCharset *» (для Apache 2 @ Unix / Linux).

2
ответ дан 14 December 2019 в 19:10
поделиться

Если вы получили $ _GET от AJAX, убедитесь, что ваш файл blablabla.js имеет кодировку UTF-8. Также Вы можете использовать iconv ("cp1251", "utf8", $ _ GET ['word']); для отображения вашего $ _GET ['word'] в UTF-8

{{1} }
0
ответ дан 14 December 2019 в 19:10
поделиться

Взгляните на Изменение кодировки сервера . Отличное чтение!

Ура!

0
ответ дан 14 December 2019 в 19:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: