[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Кириллица в PHP
KAMAEL
Требуется загрузить файлы на сервер на русском

Передача:

Свернутый текст
<? 
header('Content-Type: text/html; charset=utf-8');
?>
<h2><p><b> Форма для загрузки файлов </b></p></h2>
<
form action="upload.php" method="post" enctype="multipart/form-data">
<
input type="file" name="filename"><br>
<
input type="submit" value="Загрузить"><br>
</
form>


Прием:

Свернутый текст
<?php
header('Content-Type: text/html; charset=utf-8');
iconv('WINDOWS-1251', 'UTF-8', $date);
iconv('WINDOWS-1251', 'UTF-8', $path);
iconv('WINDOWS-1251', 'UTF-8', $path_cut);
// ???? ??????????
$date=date("G.i_d.m.Y");
$path=($_FILES["filename"]["name"]);
$n=(strlen($path)-33);
$path_cut=substr($path, 0 , $n);
// ???????? ?????
if(is_dir("$path_cut")==TRUE){}else{
mkdir ("$path_cut");};

// ?????????? ?????
move_uploaded_file ($_FILES["filename"]["tmp_name"], "$path_cut/$path");

// ????? ???????? ?????
if(isset($_FILES['filename']['name'])&&$_FILES['filename']['size']>0
&&$_FILES['filename']['error']==0){
}
else{
echo 'Ошибка: не был получен файл';
}
?>


PHP файлы сохранены в UTF8 без BOM.
Файлы сохраняются вот так Таблицы физических величин.doc



Спустя 1 минута, 42 секунды (5.11.2011 - 19:09) caballero написал(а):
у тебя имя файла крякозябрами а не содержание - при чем тут UTF8 и BOM

вообще работать с русскими именами файлов с учетом того что на хостинге обычно линух - это жесть

Спустя 4 минуты, 34 секунды (5.11.2011 - 19:14) KAMAEL написал(а):
При отправке файла: Я меееееггоооо файллллллллл.txt

Я получаю: РЇ меееееггоооо файллллллллл.txt

Как от этого избавится???

У мну не хост, а локалка. На локалке Win 7 =D

Спустя 2 минуты, 43 секунды (5.11.2011 - 19:16) caballero написал(а):
ты получаешь временное имя tmp_name на английском
вот им и пользуйся - дай тоже английское имя когда перекладываешь файл


Спустя 2 минуты, 13 секунд (5.11.2011 - 19:19) KAMAEL написал(а):
Мне надо чтоб имена файлов сохранялись с оригигнальным именем.

Спустя 2 минуты, 51 секунда (5.11.2011 - 19:21) caballero написал(а):
а iconv там нафига



Спустя 47 секунд (5.11.2011 - 19:22) KAMAEL написал(а):
А по сути вопроса предложеничя есть???

Спустя 1 минута, 7 секунд (5.11.2011 - 19:23) caballero написал(а):
раз у тебя винда так поставь везде win1251 а не UTF8

Спустя 6 минут, 11 секунд (5.11.2011 - 19:30) KAMAEL написал(а):
Лучше от этого не стало. Тепер еще и при прописание echo ($path) выводятся тоже иероглифы, а раньше было норм.

Спустя 2 минуты, 43 секунды (5.11.2011 - 19:32) caballero написал(а):
кстати, а может iconv поставить после того как присвоишь данные $path а не до

Спустя 3 минуты, 19 секунд (5.11.2011 - 19:36) KAMAEL написал(а):
Не помогло.

Спустя 1 минута, 21 секунда (5.11.2011 - 19:37) Aleks-prog написал(а):
Да нормально все ты делаешь KAMAEL оставляй utf-8 и с английскими именами файлов работай, а так я с локалкой сколько сегодня не мучился не изменил кодировку имен файлов, карче попробовал на хостингском серваке испытать форму, все работает на удивление, только файл как4ой бы ни выбрал передается как untitled.bin и весит 2 кб причем всегда, еще работать и работать в этом направлении,


остюда совет почту лучше проверять на удаленном серваке

Спустя 3 минуты, 22 секунды (5.11.2011 - 19:40) KAMAEL написал(а):
Я читал твою тему. Но я не могу просто с англ именами работать.

Просто хочу интэгрировать одну вещь в HLstatsX (скрины игроков). Ники игроков на русском, вот и надо чтоб сохранялось на русс.

Спустя 3 минуты, 10 секунд (5.11.2011 - 19:43) caballero написал(а):
так сохраняй имена в БД а файлам давай просто номер

Спустя 5 минут, 39 секунд (5.11.2011 - 19:49) KAMAEL написал(а):
Моей целью является сохранение на русс. БД не прокатит.

Спустя 10 минут, 40 секунд (5.11.2011 - 20:00) Игорь_Vasinsky написал(а):
Попробуй убрать - не похожи твои иероглифы на юникодовские

iconv('WINDOWS-1251', 'UTF-8', $date);
iconv('WINDOWS-1251', 'UTF-8', $path);
iconv('WINDOWS-1251', 'UTF-8', $path_cut);

Спустя 6 минут, 13 секунд (5.11.2011 - 20:06) alex12060 написал(а):
Сотри это:


header('Content-Type: text/html; charset=utf-8');
iconv('WINDOWS-1251', 'UTF-8', $date);
iconv('WINDOWS-1251', 'UTF-8', $path);
iconv('WINDOWS-1251', 'UTF-8', $path_cut);


и все будет кока-кола

Спустя 8 минут, 52 секунды (5.11.2011 - 20:15) KAMAEL написал(а):
Жаль но все не кока-кола =(( Не помогло

Спустя 6 минут, 58 секунд (5.11.2011 - 20:22) alex12060 написал(а):

<?php

var_dump($_SERVER);
echo '<br />';

header('Content-Type: text/html; charset=utf-8');
iconv('WINDOWS-1251', 'UTF-8', $date);
iconv('WINDOWS-1251', 'UTF-8', $path);
iconv('WINDOWS-1251', 'UTF-8', $path_cut);

var_dump($_SERVER);
echo '<br />';

die;

// ???? ??????????
$date=date("G.i_d.m.Y");
$path=($_FILES["filename"]["name"]);
$n=(strlen($path)-33);
$path_cut=substr($path, 0 , $n);
// ???????? ?????
if(is_dir("$path_cut")==TRUE){}else{
mkdir ("$path_cut");};

// ?????????? ?????
move_uploaded_file ($_FILES["filename"]["tmp_name"], "$path_cut/$path");

// ????? ???????? ?????
if(isset($_FILES['filename']['name'])&&$_FILES['filename']['size']>0
&&$_FILES['filename']['error']==0){
}
else{
echo 'Ошибка: не был получен файл';
}
?>


Покажи что выведет?

Спустя 9 минут, 3 секунды (5.11.2011 - 20:31) Fredrich написал(а):
Почему бд не прокатит???

Спустя 14 секунд (5.11.2011 - 20:31) KAMAEL написал(а):
Свернутый текст
array(42) { ["AuthDigestEnableQueryStringHack"]=> string(2) "On" ["MIBDIRS"]=> string(24) "C:/xampp/php/extras/mibs" ["MYSQL_HOME"]=> string(18) "C:\xampp\mysql\bin" ["OPENSSL_CONF"]=> string(31) "C:/xampp/apache/bin/openssl.cnf" ["PHP_PEAR_SYSCONF_DIR"]=> string(12) "C:\xampp\php" ["PHPRC"]=> string(12) "C:\xampp\php" ["TMP"]=> string(12) "C:\xampp\tmp" ["HTTP_ACCEPT"]=> string(37) "text/html, application/xhtml+xml, */*" ["HTTP_REFERER"]=> string(23) "http://localhost/files/" ["HTTP_ACCEPT_LANGUAGE"]=> string(5) "ru-RU" ["HTTP_USER_AGENT"]=> string(63) "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" ["CONTENT_TYPE"]=> string(70) "multipart/form-data; boundary=---------------------------7db22335203ce" ["HTTP_ACCEPT_ENCODING"]=> string(13) "gzip, deflate" ["HTTP_HOST"]=> string(9) "localhost" ["CONTENT_LENGTH"]=> string(5) "98542" ["HTTP_CONNECTION"]=> string(10) "Keep-Alive" ["HTTP_CACHE_CONTROL"]=> string(8) "no-cache" ["PATH"]=> string(331) "C:\Program Files\PC Connectivity Solution\;%CommonProgramFiles%\Microsoft Shared\Windows Live;C:\Perl\site\bin;C:\Perl\bin;C:\Program Files\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Common Files\Microsoft Shared\Windows Live" ["SystemRoot"]=> string(10) "C:\Windows" ["COMSPEC"]=> string(27) "C:\Windows\system32\cmd.exe" ["PATHEXT"]=> string(53) ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC" ["WINDIR"]=> string(10) "C:\Windows" ["SERVER_SIGNATURE"]=> string(189) "
Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 Server at localhost Port 80
" ["SERVER_SOFTWARE"]=> string(141) "Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1" ["SERVER_NAME"]=> string(9) "localhost" ["SERVER_ADDR"]=> string(3) "::1" ["SERVER_PORT"]=> string(2) "80" ["REMOTE_ADDR"]=> string(3) "::1" ["DOCUMENT_ROOT"]=> string(15) "C:/xampp/htdocs" ["SERVER_ADMIN"]=> string(20) "postmaster@localhost" ["SCRIPT_FILENAME"]=> string(32) "C:/xampp/htdocs/files/upload.php" ["REMOTE_PORT"]=> string(5) "53972" ["GATEWAY_INTERFACE"]=> string(7) "CGI/1.1" ["SERVER_PROTOCOL"]=> string(8) "HTTP/1.1" ["REQUEST_METHOD"]=> string(4) "POST" ["QUERY_STRING"]=> string(0) "" ["REQUEST_URI"]=> string(17) "/files/upload.php" ["SCRIPT_NAME"]=> string(17) "/files/upload.php" ["PHP_SELF"]=> string(17) "/files/upload.php" ["REQUEST_TIME"]=> int(1320514253) ["argv"]=> array(0) { } ["argc"]=> int(0) }

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\files\upload.php:3) in C:\xampp\htdocs\files\upload.php on line 6
array(42) { ["AuthDigestEnableQueryStringHack"]=> string(2) "On" ["MIBDIRS"]=> string(24) "C:/xampp/php/extras/mibs" ["MYSQL_HOME"]=> string(18) "C:\xampp\mysql\bin" ["OPENSSL_CONF"]=> string(31) "C:/xampp/apache/bin/openssl.cnf" ["PHP_PEAR_SYSCONF_DIR"]=> string(12) "C:\xampp\php" ["PHPRC"]=> string(12) "C:\xampp\php" ["TMP"]=> string(12) "C:\xampp\tmp" ["HTTP_ACCEPT"]=> string(37) "text/html, application/xhtml+xml, */*" ["HTTP_REFERER"]=> string(23) "http://localhost/files/" ["HTTP_ACCEPT_LANGUAGE"]=> string(5) "ru-RU" ["HTTP_USER_AGENT"]=> string(63) "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" ["CONTENT_TYPE"]=> string(70) "multipart/form-data; boundary=---------------------------7db22335203ce" ["HTTP_ACCEPT_ENCODING"]=> string(13) "gzip, deflate" ["HTTP_HOST"]=> string(9) "localhost" ["CONTENT_LENGTH"]=> string(5) "98542" ["HTTP_CONNECTION"]=> string(10) "Keep-Alive" ["HTTP_CACHE_CONTROL"]=> string(8) "no-cache" ["PATH"]=> string(331) "C:\Program Files\PC Connectivity Solution\;%CommonProgramFiles%\Microsoft Shared\Windows Live;C:\Perl\site\bin;C:\Perl\bin;C:\Program Files\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Common Files\Microsoft Shared\Windows Live" ["SystemRoot"]=> string(10) "C:\Windows" ["COMSPEC"]=> string(27) "C:\Windows\system32\cmd.exe" ["PATHEXT"]=> string(53) ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC" ["WINDIR"]=> string(10) "C:\Windows" ["SERVER_SIGNATURE"]=> string(189) "
Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1 Server at localhost Port 80
" ["SERVER_SOFTWARE"]=> string(141) "Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1" ["SERVER_NAME"]=> string(9) "localhost" ["SERVER_ADDR"]=> string(3) "::1" ["SERVER_PORT"]=> string(2) "80" ["REMOTE_ADDR"]=> string(3) "::1" ["DOCUMENT_ROOT"]=> string(15) "C:/xampp/htdocs" ["SERVER_ADMIN"]=> string(20) "postmaster@localhost" ["SCRIPT_FILENAME"]=> string(32) "C:/xampp/htdocs/files/upload.php" ["REMOTE_PORT"]=> string(5) "53972" ["GATEWAY_INTERFACE"]=> string(7) "CGI/1.1" ["SERVER_PROTOCOL"]=> string(8) "HTTP/1.1" ["REQUEST_METHOD"]=> string(4) "POST" ["QUERY_STRING"]=> string(0) "" ["REQUEST_URI"]=> string(17) "/files/upload.php" ["SCRIPT_NAME"]=> string(17) "/files/upload.php" ["PHP_SELF"]=> string(17) "/files/upload.php" ["REQUEST_TIME"]=> int(1320514253) ["argv"]=> array(0) { } ["argc"]=> int(0) }

Спустя 5 минут, 22 секунды (5.11.2011 - 20:37) KAMAEL написал(а):
Цитата (Fredrich @ 5.11.2011 - 17:31)
Почему бд не прокатит???

Потому что пока я не напишу скрипт без БД, человек, который предоставляем мне эту программу, не переделает ее под русскую отправку файлов. У него руские файлы переименовываются в untitled.jpg, мне надо доказать ему что можно легко организовать прием русских на PHP.

+ самому интересно почему у меня файлы коряво уходят. Пригодится.

Спустя 10 минут, 44 секунды (5.11.2011 - 20:47) alex12060 написал(а):
тьфу, сорри.

на $_FILES везде замени.

Спустя 14 минут, 35 секунд (5.11.2011 - 21:02) KAMAEL написал(а):
Ответ давольно интересный:

Свернутый текст
array(1) { ["filename"]=> array(5) { ["name"]=> string(31) "Я меееееггоооо файллллллллл.txt" ["type"]=> string(10) "text/plain" ["tmp_name"]=> string(24) "C:\xampp\tmp\php2893.tmp" ["error"]=> int(0) ["size"]=> int(98304) } }

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\files\upload.php:3) in C:\xampp\htdocs\files\upload.php on line 6
array(1) { ["filename"]=> array(5) { ["name"]=> string(31) "Я меееееггоооо файллллллллл.txt" ["type"]=> string(10) "text/plain" ["tmp_name"]=> string(24) "C:\xampp\tmp\php2893.tmp" ["error"]=> int(0) ["size"]=> int(98304) } }


Странно, проблема изчезла. Так и не понял что я делал не так.

Итог:

Свернутый текст
<?php

//var_dump($_FILES);
echo '<br />';

//header('Content-Type: text/html; charset=utf-8');
iconv('WINDOWS-1251', 'UTF-8', $date);
iconv('WINDOWS-1251', 'UTF-8', $path);
iconv('WINDOWS-1251', 'UTF-8', $path_cut);

//var_dump($_FILES);
echo '<br />';

//die;

// ???? ??????????

$date=date("G.i_d.m.Y");
$path=($_FILES["filename"]["name"]);
$n=(strlen($path)-33);
$path_cut=substr($path, 0 , $n);
// ???????? ?????
if(is_dir("$path_cut")==TRUE){}else{
mkdir ("$path_cut");};

echo ("$path_cut $n");

// ?????????? ?????
move_uploaded_file ($_FILES["filename"]["tmp_name"], "$path_cut/$path");

// ????? ???????? ?????
if(isset($_FILES['filename']['name'])&&$_FILES['filename']['size']>0
&&$_FILES['filename']['error']==0){
}
else{
echo 'Ошибка: не был получен файл';
}
?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.