Перейти к содержимому



Как сменить кодировку файла?

#1 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0
0

Отправлено 19 Сентябрь 2010 - 17:41

Есть ли возможность средствами php изменить кодировку файла, загруженного на сервер, не считывая его? Например с cp1251 на UTF-8
Заранее спасибо.

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Не могу сменить кодировку в файле .htaccess
  2. Сменить кодировку на WP
  3. Как настроить файл sitemap.xml для DLE при смене домена

#2 AltaVista

AltaVista
  • Пользователь
  • 11 сообщений
  • Репутация: 0

Отправлено 25 Сентябрь 2010 - 11:18

На сколько я знаю.. такой функции нет! Хотя смотря что за файл и для каких целей он туда загружается.. Можно более подробно расписать??? А то не совсем понятен вопрос..
  • 0

#3 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 26 Сентябрь 2010 - 10:10

gaaarfild, в стандартных пакетах такой функции не видел, но думаю, что должна быть как минимум в PCRE или PCEL.
Или возможно даже в каких-либо общественных фреймворках. Но как мне кажется, без чтения файла кодировку не поменять.
Кодировка - представление символа строго определенной комбинацией знаков. То есть каждому символу соответствует определенная комбинация. В разных кодировках разные последовательности. Поэтому чтобы перевести из одной кодировки в другую, нужно считывать каждый символ файла и изменять его представление из одной кодировки в другую посредством смены комбинации знаков.
Так что тут без чтения самого файла никак не обойтись. У меня кстати где-то была функция перекодировки символов из cp1251 в UTF-8 и обратно посимвольно. Если надо, выложу. Хотя и в инете это всё можно найти.
  • 0

#4 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 26 Сентябрь 2010 - 15:02

Ну файлы загружаются пользователями.
Но порой они путают кодировки. А для загрузки в БД критично, чтобы была кодировка UTF-8.
Файл читается средствами СУБД а не PHP.
Поэтому необходимо сменить кодировку файла до чтения.
  • 0

#5 alex_zp

alex_zp
  • Пользователь
  • 14 сообщений
  • Репутация: 0

Отправлено 27 Сентябрь 2010 - 01:23

А почему просто не перекодировать файл, при загрузке на сервер?
  • 0

#6 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 01 Октябрь 2010 - 13:10

Так как его перекодировать?
  • 0

#7 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 01 Октябрь 2010 - 18:43

gaaarfild,
вроде средствами апача можно перекодировать:
в .htaccess помещаем инструкцию

CharsetSourceEnc windows-1251
или для utf-8
CharsetSourceEnc utf-8
Из описания инструкции: "При загрузке посетителем файла на сервер, возможна перекодировка его - указываем, что все получаемые файлы будут иметь кодировку windows-1251".

Я сам это не использовал, если протестируешь этот вариант - отпиши о результатах.
  • 0

#8 gaaarfild

gaaarfild
    Topic Starter
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 12 Октябрь 2010 - 13:47

А данную директиву куда кидать?
В корень сайта? Или вообще куда? =)
Я поместил в корне сайта в .htaccess. Не поменялась кодировка.


  • 0

#9 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 12 Октябрь 2010 - 22:13

gaaarfild, возможно нужен доп. модуль для Apache, почитай по данной директиве. А так, куда кидать, писалось выше :lol:
  • 0

#10 yury

yury
  • Пользователь
  • 629 сообщений
  • Репутация: 176

Отправлено 13 Октябрь 2010 - 13:01

А данную директиву куда кидать?
В корень сайта? Или вообще куда? =)
Я поместил в корне сайта в .htaccess. Не поменялась кодировка.

gaaarfild,

Действие команд из файла .htaccess распространяется и на подкаталоги того каталога, в котором этот файл размещен. Если файл .htaccess расположен в корневой директории сервера, то его действие распространяется на весь сервер, кроме тех директорий, где находится другой файл . htaccess (и кроме всех папок "ниже" этой папки со вторым . htaccess).
...
главная проблема при использовании директив .htaccess – это прежде всего ограничения хостеров, особенно на бесплатных серверах, и на начальных тарифах при платном хостинге, хотя как правило, многие не ресурсоемкие и безопасные директивы здесь уже разрешаются.

взято отсюда: http://www.htaccess....u/doc/htaccess/

Короче, одно из двух:
либо у вас хостер ограничил использование .htaccess (для справки: настройки апача в том числе и настройки использования .htaccess живут в httpd.conf - конкретно, директива AllowOverride разрешает/запрещает использование .htaccess)
либо директива CharsetSourceEnc делает не совсем то, что кажется из ее описания ;)
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru