PHP: Кавычки в читаемых/записываемых файлах
2357
11
Есть текстовые файлы на сервере.

Есть php-скрипт, который читает выбранный файл и выводит его содержимое в textarea. Далее файл редактируется, жмется кнопка ОК, содержимое из textarea пишется обратно в файл.

Трабла: при записи все кавычки, которые есть в тексте в textarea принудительно экранируются ' \" '.
И в итоге имеем ' \"Microsoft\" corporation can't make good soft '

Как победить?
Поручик Голицын
Еще один прикол:

описанные текстовые файлы все в кодировке koi8. При чтении в вышеупомянутую textarea и последующем сохранении с кодировками ничего не делаю.
Некоторые файлы при сохранении остаются в той же кодировке, а некоторые переходят в Win.
Причем это не случайным образом, а постоянно одни и те же файлы.
(Уже пробовал принудительную перекодировку convert_cyr_string($str, "w", "k"); именно этим файлам делать - не помогает).

Может кто-нить такое объяснить?
Поручик Голицын
Поправочка:
перекодировка помогает.

Вот только один и тот же "капризный" файл еще и ведет себя по-разному в зависимости от того, были сделаны изменения или нет.
Поручик Голицын
какая-то фантастика. Форма-то одна и та же, всегда с сервера? Иэ кэша с другими заголовками и META-тэгом ничего не вылезает?
UdoD
Сам знаю, что фантастика :).

А результаты исполнения php разве на машине кэшируются? Я со страницы на страницу не по ссылкам перехожу, а по кнопке из формы
Поручик Голицын
[цвет:blue]Рђ результаты исполнения php разве РЅР° РјР°С?РёРЅРµ РєСЌС?ируются?[/цвет]
если честно - РЅРµ РїРѕРјРЅСЋ, это может РѕС‚ броузера зависеть. (Кажется, Опера РІСЃРµ-таки РєСЌС?ирует - СЏ РїРѕРјРЅСЋ, что всегда после ее установки ставлю РІ настройках РєСЌС?Р° "check documents" РІ "always" ). Р?ли РѕС‚ настроек промежуточного РїСЂРѕРєСЃРё-сервера.
Можно тупо временно переименовать php-файл, чтобы это исключить.
UdoD
а теперь по-русски, плиз....:улыб:
я такие кракозябры читать не умею....
Поручик Голицын
(о, ай м сорри.)

У меня однажды была такая ситуация: сервер (старый Apache под Linux) отдавал страницы так, что они всегда попадали в кэш броузеров, причем php'шные - тоже. В чем дело было уже не помню, я не стал разбираться (сервер был тестовый), а просто подкрутил клиента - изменил настройки кеша Оперы.

А выглядело это действительно с виду странно: мне вываливались из кэша страницы со старыми данными и старым html-кодом (почему я и предположил - может из кэша поднимается страница с другой кодировкой?)
>>Вот только один и тот же "капризный" файл еще и ведет себя по-разному в зависимости от того, были сделаны изменения или нет.

могу предположить, что сделав изменения и отправив данные
- ты то, что отрисовывалось в texarea невольно (не без помощи
браузера, который выставил с бухты-барахты другую, отличную
от твоей, кодировку) получаешь в такой кодировке, которую не ждешь)))
ты думаешь, что тебе придёт koi-8r, а приходит windows-1251...
и изменения в кодировке windows-1251 ты пишешь в файл, который
позже хочешь прочитать как koi-8r. Хотя могет у тя ещё что-нить
не так происходит?


да, попутно... выставление charset в теге META - не гарантирует, что страница
отрисуется именно в той кодировке, что ты указал. Apache может выплюнуть
в поток свою кодировку, и то, что в мета-теге - просто побреется)))
как выход, можешь средствами того же php указывать charset
в отправляемом заголовке .... Как это сделать? - глянь маны по php )))

PS: магии тут нет - это уже давным давно доказано.
есть некорректное использование инструментов )))
и врождённая лень читать маны)))
>>> могу предположить, что сделав изменения и отправив данные
- ты то, что отрисовывалось в texarea невольно (не без помощи
браузера, который выставил с бухты-барахты другую, отличную
от твоей, кодировку) получаешь в такой кодировке, которую не ждешь)))
ты думаешь, что тебе придёт koi-8r, а приходит windows-1251...


На что я опираюсь и чего ожидаю:
Все статичные хтмл-странице на сервере в кодировке кои-8. И шаблоны для пхп-скриптов тоже. И наполнители для шаблонов. Поэтому поначалу я вообще не заморачивался насчет кодировки - браузер сам все прекрасно распознавал и корректно отображал.
И ни разу не было, чтобы он отобразил не в той кодировке. И когда тестировался этот мини-редактор, который мы счас обсуждаем, такого тоже не случалось (то есть ни с одним из тестовых файлов такой хрени не было).
А вот когда начал подсовывать то, что реально нужно - то 3 из 10 файлов косячат.

>>> PS: магии тут нет - это уже давным давно доказано.
есть некорректное использование инструментов )))


И еще есть кривой софт, который имея, казалось бы, одни и те же условия, выдает разный результат.