|
|
|
| Создаю файл как обычно:
fopen ( ... 'w' );
fputs ( ... );
fclose ( ... );
| Но файл создаётся кракозябрами, если имя задаю по-русски.
В чём дело, как исправить?
P.S. При создании имя задаю в виде: mb_strtolower($name).txt.
В htaccess: php_value default_charset UTF-8.
В php-файле: mb_internal_encoding('utf-8');. | |
|
|
|
|
|
|
|
для: Maxam
(30.03.2011 в 16:13)
| | string mb_strtolower (string $str [, string encoding])
Эта функция возвращает строку со сконвертированными в нижний регистр символами.
Аргумент encoding задает кодировку символов. Если аргумент encoding не задан, то используется внутренняя кодировка.
Пробовали явно указать кодировку? | |
|
|
|
|
|
|
|
для: z668
(30.03.2011 в 16:54)
| | Не знал. Попробую щас. | |
|
|
|
|
|
|
|
для: z668
(30.03.2011 в 16:54)
| | Не сработало. Тестирую я на localhost. Может поэтому что? | |
|
|
|
|
|
|
|
для: Maxam
(30.03.2011 в 17:02)
| | Если возможно выложите весь код скрипта для наглядности | |
|
|
|
|
|
|
|
для: Maxam
(30.03.2011 в 16:13)
| | Откуда поступает переменная $name и что в ней? | |
|
|
|
|
|
|
|
для: cheops
(30.03.2011 в 17:13)
| | Поступает из поля <input type="text"> через POST, в ней русский текст. | |
|
|
|
|
|
|
|
для: Maxam
(30.03.2011 в 19:51)
| | А страницы в какой кодировке? Попробуйте просто создать файл без перекодировки. | |
|
|
|
|
|
|
|
для: cheops
(30.03.2011 в 21:32)
| | Не знаю точно, что вы имели ввиду, но я попробовал без переменной создать, т.е. самому ввести русское имя в fopen - всё равно кракозябры:
| |
|
|
|
|
|
|
|
для: Maxam
(30.03.2011 в 21:41)
| | Создайте файл в кодировке Windows-1251 следующего содержания
<?php
$fd = fopen("имя файла.txt", "w");
fputs($fd, "text");
fclose($fd);
?>
|
Он у вас корректно файл создает? | |
|
|
|
|
|
|
|
для: cheops
(31.03.2011 в 10:08)
| | Нет (
| |
|
|
|
|
|
|
|
для: Maxam
(31.03.2011 в 23:08)
| | Хм... скрипт точно был в кодировке Windows-1251, а не UTF-8? | |
|
|
|
|
|
|
|
для: cheops
(31.03.2011 в 23:13)
| | Да, точно: UTF-8 (без BOM). | |
|
|
|
|
|
|
|
для: cheops
(31.03.2011 в 23:13)
| | Я только знаю, что если указать кодировку Windows-1251, то файл создаётся нормально, но у меня utf-8 обязательно. Или может думаете на локалхост и сервере в интернете будет по-разному? | |
|
|
|
|
|
|
|
для: Maxam
(31.03.2011 в 23:18)
| | Конечно. Windows от вас ждет cp1251, UNIX-подобные операционные системы зачастую UTF-8. Но вообще, лучше воздержаться от создания файлов с русскими именами. Жесткой необходимость в этом бывает очень редка, для пользователей можно все эмулировать, а внутри системы лучше хранить файлы с английскими именами - надежнее. | |
|
|
|
|
|
|
|
для: cheops
(31.03.2011 в 23:55)
| | Хорошо, спасибо, учту. | |
|
|
|