Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Создать файл с русским текстом
 
 автор: Maxam   (30.03.2011 в 16:13)   письмо автору
 
 

Создаю файл как обычно:
fopen ( ... 'w' );
fputs ( ... );
fclose ( ... );
Но файл создаётся кракозябрами, если имя задаю по-русски.

В чём дело, как исправить?

P.S. При создании имя задаю в виде: mb_strtolower($name).txt.
В htaccess: php_value default_charset UTF-8.
В php-файле: mb_internal_encoding('utf-8');.

  Ответить  
 
 автор: z668   (30.03.2011 в 16:54)   письмо автору
 
   для: Maxam   (30.03.2011 в 16:13)
 

string mb_strtolower (string $str [, string encoding])

Эта функция возвращает строку со сконвертированными в нижний регистр символами.
Аргумент encoding задает кодировку символов. Если аргумент encoding не задан, то используется внутренняя кодировка.

Пробовали явно указать кодировку?

  Ответить  
 
 автор: Maxam   (30.03.2011 в 17:01)   письмо автору
 
   для: z668   (30.03.2011 в 16:54)
 

Не знал. Попробую щас.

  Ответить  
 
 автор: Maxam   (30.03.2011 в 17:02)   письмо автору
 
   для: z668   (30.03.2011 в 16:54)
 

Не сработало. Тестирую я на localhost. Может поэтому что?

  Ответить  
 
 автор: z668   (30.03.2011 в 17:05)   письмо автору
 
   для: Maxam   (30.03.2011 в 17:02)
 

Если возможно выложите весь код скрипта для наглядности

  Ответить  
 
 автор: cheops   (30.03.2011 в 17:13)   письмо автору
 
   для: Maxam   (30.03.2011 в 16:13)
 

Откуда поступает переменная $name и что в ней?

  Ответить  
 
 автор: Maxam   (30.03.2011 в 19:51)   письмо автору
 
   для: cheops   (30.03.2011 в 17:13)
 

Поступает из поля <input type="text"> через POST, в ней русский текст.

  Ответить  
 
 автор: cheops   (30.03.2011 в 21:32)   письмо автору
 
   для: Maxam   (30.03.2011 в 19:51)
 

А страницы в какой кодировке? Попробуйте просто создать файл без перекодировки.

  Ответить  
 
 автор: Maxam   (30.03.2011 в 21:41)   письмо автору
 
   для: cheops   (30.03.2011 в 21:32)
 

Не знаю точно, что вы имели ввиду, но я попробовал без переменной создать, т.е. самому ввести русское имя в fopen - всё равно кракозябры:
РїР· Р™.txt

  Ответить  
 
 автор: cheops   (31.03.2011 в 10:08)   письмо автору
 
   для: Maxam   (30.03.2011 в 21:41)
 

Создайте файл в кодировке Windows-1251 следующего содержания
<?php
  $fd 
fopen("имя файла.txt""w");
  
fputs($fd"text");
  
fclose($fd);
?>

Он у вас корректно файл создает?

  Ответить  
 
 автор: Maxam   (31.03.2011 в 23:08)   письмо автору
 
   для: cheops   (31.03.2011 в 10:08)
 

Нет (
РёРјСЏ С„айла.txt

  Ответить  
 
 автор: cheops   (31.03.2011 в 23:13)   письмо автору
 
   для: Maxam   (31.03.2011 в 23:08)
 

Хм... скрипт точно был в кодировке Windows-1251, а не UTF-8?

  Ответить  
 
 автор: Maxam   (31.03.2011 в 23:16)   письмо автору
 
   для: cheops   (31.03.2011 в 23:13)
 

Да, точно: UTF-8 (без BOM).

  Ответить  
 
 автор: Maxam   (31.03.2011 в 23:18)   письмо автору
 
   для: cheops   (31.03.2011 в 23:13)
 

Я только знаю, что если указать кодировку Windows-1251, то файл создаётся нормально, но у меня utf-8 обязательно. Или может думаете на локалхост и сервере в интернете будет по-разному?

  Ответить  
 
 автор: cheops   (31.03.2011 в 23:55)   письмо автору
 
   для: Maxam   (31.03.2011 в 23:18)
 

Конечно. Windows от вас ждет cp1251, UNIX-подобные операционные системы зачастую UTF-8. Но вообще, лучше воздержаться от создания файлов с русскими именами. Жесткой необходимость в этом бывает очень редка, для пользователей можно все эмулировать, а внутри системы лучше хранить файлы с английскими именами - надежнее.

  Ответить  
 
 автор: Maxam   (01.04.2011 в 01:33)   письмо автору
 
   для: cheops   (31.03.2011 в 23:55)
 

Хорошо, спасибо, учту.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования