1

Тема: PHP выводит знаки вопроса вместо русских символов (без MySQL)

Добрый день.
У меня виртуальный хостинг. Вчера попытался выполнить минимальный скрипт:
<?
echo("Русский текст\n");
?>

Когда обращаюсь к этому скрипту из броузера - в ответ вижу вопросительные знаки. Сам скрипт сохранен в ANSI. Т.е. если посмотреть файл на сервере, в нем виден нормальный русский текст. В броузере - соответственно знаки вопроса. Исходный код страницы в броузере выглядит так "??????? ?????".
В настройках Apache по умолчанию стоит Windows-1251. И html-страницы выводятся соответственно в windows-1251. Также на сервере установлен форум и медиаВики. В них все выглядит отлично.
Я перерыл уже целую тонну информации в интернете, даже на этом форуме есть огромное количество подобных тем, но там везде используется MySQL. А что можно сделать в моем случае?
Заранее спасибо!

2

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

Vad
Создайте в корне хоста файл .htaccess со следующей строкой:

PHP_VALUE default_charset windows-1251

3

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

Попробовал, но стала появляться Internal Server Error. В логе ошибка "php_value not allowed here". На всякий случай в настройках Apache также есть опции:
CGI
Options +ExecCGI
Options +Indexes
Options +FollowSymLinks
Options +Multiviews

Они все выключены. Может это как-то влияет?

4

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

Vad
В блок Directory вашего хоста добавьте строку:
AllowOverride All
Или
AllowOverride Options

5 (изменено: Vad, 2010-02-04 13:45:42)

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

У меня виртуальный хостинг - к конфигурации сервера доступ закрыт. Или это можно прописать в корне своей папки?

6

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

Vad
Думаю вам лучше обратиться к хостеру с вопросом о возможности установки AllowOverride All для возможности прописать PHP_VALUE default_charset windows-1251

7

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

Понятно, спасибо большое.

Еще один маленький вопрос. Строчка с PHP_VALUE default_charset windows-1251 затронет только текущую директорию или вложенные тоже? Т.е. повлияет ли на имеющиеся форум и Wiki, которые лежат в этой же папке в папках forum и wiki соответственно?

8

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

Vad
Повлияют, поэтому лучше положить .htaccess с данной директивой не в корень хоста, а только в те папки, которые используют windows-1251. Либо прописать данную директиву в корень, а в другие каталоги положить .htaccess со строкой:
PHP_VALUE default_charset utf-8

Это как вам покажется удобнее.

9

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

Спасибо большое!

10

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

Hanut сказал:

Vad
Создайте в корне хоста файл .htaccess со следующей строкой:

PHP_VALUE default_charset windows-1251

Здравствуйте!

У меня подобная проблема - все  русские буквы идут вопросиками. При попытке создать такой файл сервер вообще отказался что-либо выводить и заявил, что у меня неправильный файл .htaccess Так кто прав - он или я?

11

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

wowa
Я не понял, вы не можете создать файл .htaccess, или ошибка появляется именно на этой строке?

12

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

Была такая же проблема. Сделал как тут, русские символы стали выводится отлично, а вот с англ. теперь что-то на подобие этого:
Сотрудник
(сервер настраивал в точности как написано на главной)

13

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

KeSSedy сказал:

Была такая же проблема. Сделал как тут, русские символы стали выводится отлично, а вот с англ. теперь что-то на подобие этого:
Сотрудник
(сервер настраивал в точности как написано на главной)

Что было, что делали и что получилось? Желательно с примерами.
В какой кодировке страницы сайта? в какой кодировке таблицы в БД? как отображается кириллица в phpMyAdmin?

Английские символы не могут так выводиться (Сотрудник), так отображается кириллица в Юникоде при кодировке windows-1251.

14

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

Да, простите это я туплю. Это действительно кириллица (в моем пхп файле).
Страницы сайта точно не знаю в какой (ну по стандарту которая в Дримвьювере).
Таблицы в phpMyAdmin в utf8_general_ci, кроме моей пробной она в cp1251_general_ci.
Кириллица в phpMyAdmin отображается нормально.

Значит кириллица из таблиц стала нормально, а  проблемы с кириллицей в пхп файлах.

15

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

Были просто знаки вопроса, кроме тех слов которые выводятся из пхп-файла.
Тоесть данные (на кириллице), выводимые из таблицы выводились знаками вопросов. Кодировку в phpMyAdmin не трогал негде. Только создал .htaccess и добавил строчку, которая описана вами. После этого, данные выводимые из таблицы стали на русском, а в пхп-файлах вот так побились

16

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

Страницы скрипта у вас в кодировке utf8, а данные в БД в cp1251. Приведите все к единой кодировке, либо смените ее у файлов, либо в БД.

Не знаю как в Dreamweaver, в Notepad++ можно кодировку файла увидеть в статусной строке, там будет либо UTF8, либо ANSI.

17

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

фух еле сделал, уже на грани отчаивания и жмакания на кнопку power big_smile
поменял в Dreamweaver кодировку на: Кириллица (Windows). (сначала остановило то что не было кодировки с конкретным названием 1251). а теперь все норм!
Вы не представляете как облегчили мне работу, я просто новичек совсем и меня это так застопорило...
Спасибо огромное!!! tongue

18

Re: PHP выводит знаки вопроса вместо русских символов (без MySQL)

Hanut сказал:

Vad
Создайте в корне хоста файл .htaccess со следующей строкой:

PHP_VALUE default_charset windows-1251

Огромное спасибо! Помогло. До этого русские буквы выводились, но символы типа тире превращались в знак вопроса.