Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> кодировка имени файла 
:(
    Опции темы
Ryan5
Дата 19.1.2008, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 5.11.2007

Репутация: нет
Всего: нет



Из текстового файла в кодировке UTF-8 считывается строка в переменную $filename. В этой строке - имя текстового файла.
Его содержимое я передаю в переменную $f.
$f = file_get_contents("$filename");
Но, скрипт пишет что "failed to open stream: HTTP request failed!". Хотя файл на сервере есть. То же самое происходит с и локальными файлами. В какую кодировку надо перевести строку (имя файла), чтобы файл нормально открылся?
Тестирую скрипт на виндоусе.
PM MAIL   Вверх
skyboy
Дата 19.1.2008, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Ryan5, как у тебя задан путь? "http://..."? или по-нормальному - просто локальный путь "папка/файл"?
PM MAIL   Вверх
Ryan5
Дата 19.1.2008, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 5.11.2007

Репутация: нет
Всего: нет



Ну я делал сначала для внешних файлов, то есть http://
Не получилось и я попробовал для локальных, и на них не получается.
$url="D:/1.txt";
$f=fopen($url,"rb");
и не работает
так же не работает если вставить путь к внешнему файлу.
Перепробовал уже кучу кодировок.
PM MAIL   Вверх
skyboy
Дата 19.1.2008, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Ryan5, странно ты мануал читаешь. впрочем, может, и не читаешь.
в мане совсем недалеко от начала страницы есть пример по fopen на windows-платформе:
Цитата(php.net)

On the Windows platform, be careful to escape any backslashes used in the path to the file, or use forward slashes.
Код

<?php
$handle = fopen("c:\\data\\info.txt", "r");
?>


Сравни со своим кодом:
Цитата(Ryan5 @  19.1.2008,  21:26 Найти цитируемый пост)
Код

$url="D:/1.txt";
$f=fopen($url,"rb");

Разницу видно?
PM MAIL   Вверх
Ryan5
Дата 20.1.2008, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 5.11.2007

Репутация: нет
Всего: нет



Об экранировании символов я знаю.
И поэтому в пути разделитель каталогов я написал не \ а /
"D:/1.txt"
Я имею ввиду что запись 
$f=fopen("D:/1.txt","rb"); работает
запись
$url="D:/1.txt";
$f=fopen($url,"rb"); работает. 
А когда я считываю значение $url из файла, например
$url=fgets($fh); //считывается строка D:/1.txt
$f=fopen($url,"rb");
То файл перестаёт открываться, хотя путь тот же. Выходит проблемы с кодировкой. Я её везде сделал cp1251 и всё равно никак.
PM MAIL   Вверх
Golda
Дата 20.1.2008, 01:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

Репутация: 20
Всего: 42



Сомневаюсь, что речь идет о кодировке. По крайней мере до тех пор, пока Вы используете в именах файлов только симовлы первой половины таблицы ASCII (не используете символы национального алфавита). Думаю, у Вас переводы строки в имя файла зачитались функцией fgets(). Попробуйте отфильтровать их функцией  trim(). Скорее всего проблема исчезнет


--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
GeneralElectric
Дата 21.1.2008, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



Ryan5, "То же самое" с локальными файлами происходить не может. Они на то и локальные, что никаких  HTTP request-ов при их открытии происходить не может. 
Значит, либо ты неправильно понимаешь, что такое локальные файлы, либо сообщение об ошибке будет другое. Где оно в таком случае? Мы должны угадывать?

Дальше. Ты долго своими словами описываешь эти файлы. Неужели трудно привести пример имени файла, который не открывается? 
Или ты считаешь, что если на форуме будут угадывать - что там у тебя может быть в имени файла, то так лучше получится ответить?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0473 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.