Войти
ПрограммированиеФорумВеб

PHP записывает в файл вместо текста знаки вопросов

#0
4:42, 7 фев. 2012

Скрипт раз в сутки сохраняет историю чата из базы.
Создаёт новый файл и пишет туда всю таблицу построчно.
И вроде бы закодировано всё в юникоде.
Но в результате в файле появляются только знаки вопросов.
Что можно посмотреть/проверить?


#1
7:41, 7 фев. 2012

SET NAMES CP1251 (или utf8)

Мускуль имеет три кодировки - базы данных, подключения, и таблицы. Вопросы появляются из-за несогласования кодировок. Кроме того проверь кодировку самого скрипта(php), потому что вопросы ещё могут что скрипт скармливает данные в кодировки 1251, он сохраняет в UTF8 а когда извлекает видит что там вовсе не UTF-8. Поиграй вообщем с SET Names. А так эта проблема очень распространёная у мускуля

#2
11:20, 7 фев. 2012

Попробуй использовать перед запросом данных:

mysql_query("SET CHARACTER_SET_CLIENT=utf8;");
mysql_query("SET CHARACTER_SET_RESULTS=utf8;");
mysql_query("SET CHARACTER_SET_CONNECTION=utf8;");

поиграйся с кодировками, зависит от того, в чем в бд хранится (у меня, например, utf8) и в чем выводит скрипт (опять же у меня в cp1251)

#3
20:56, 7 фев. 2012

Сначала поменяй кодировку таблицы на русскую:

ALTER TABLE имя_таблицы_чата CONVERT TO CHARACTER SET cp1251;
Потом в своем файле чата добавь:
<meta http-equiv="content-type" content="text/html; charset=windows-1251" />
Если не поможет, можешь в php скрипт прописать:
header("Content-Type: text/html; charset=windows-1251");

Прошло более 7 месяцев
#4
12:58, 3 окт. 2012

лучше my.cnf установите кодировку при коннекте к бд.
в секции [client]
default-character-set=utf8

#5
14:44, 3 окт. 2012

vq#
> Сначала поменяй кодировку таблицы на русскую:
> ALTER TABLE имя_таблицы_чата CONVERT TO CHARACTER SET cp1251;
> Потом в своем файле чата добавь:
> <meta http-equiv="content-type" content="text/html; charset=windows-1251" />
> Если не поможет, можешь в php скрипт прописать:
> header("Content-Type: text/html; charset=windows-1251");
С ума посходили в этом вашем похапе. Никаких 1251, пользуйтесь UTF8.

#6
19:24, 3 окт. 2012

вы хоть на дату топика смотрите. я уже даже не помню, как это решил. вроде бы задал кодировку подключения к базе.

#7
1:57, 4 окт. 2012

О, и я тоже копнул могильной землицы.
А можно сделать чтоб через 2-3-6 мес закрывались топики к чертям?

#8
2:29, 4 окт. 2012

kvakvs
> А можно сделать чтоб через 2-3-6 мес закрывались топики к чертям?
Ты что, низя! Полезный ответ может придти даже спустя годы. Пример.

#9
12:59, 4 окт. 2012

kvakvs
> С ума посходили в этом вашем похапе. Никаких 1251, пользуйтесь UTF8.

Да ладно, всякое бывает. А с UTF8 не работают часть встроенных функций по строкам, типа strtolower, stripos и иже с ними. Приходится свои писать иногда. Да, mb_string бы спас, но его нету, возможности добавить его - тоже.

Прошло более 2 лет
#10
20:44, 21 мар. 2015

>А можно сделать чтоб через 2-3-6 мес закрывались топики к чертям?
Сдурел? Я недавно откопал свою тему от 2003-го года. Довольный был как слон, что она ещё сохранилась.
Это фича форума. Очень ей рад.

ПрограммированиеФорумВеб

Тема в архиве.