Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Условия в .htaccess

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: У меня нет идей, может я и туплю...
DeepVarvar Супермодератор
Отправлено: 08 Июня, 2012 - 14:32:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Есть сервер, и на этом сервере в папке /files лежит несколько файлов:

/files/filename-UTF-8
/files/filename-windows-1251
/files/filename-UTF-7
/files/filename-UTF-16LE

Эти файлы есть просто text/plain, но содержимое, хоть и одинаковое,
как уже виднов примере сохранено в соответствующей кодировке.

Что нужно прописать в .htaccess чтобы при запросе определенного файла в ответе сервера добавлялся соответствующий заголовок с нужным charset?
 
 Top
EuGen Администратор
Отправлено: 08 Июня, 2012 - 14:35:49
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




(пример для UTF-8 и html, для plain-текста - соответственно)
CODE (htmlphp):
скопировать код в буфер обмена
  1. <filesMatch "Ваше_регулярное_выражение_здесь">
  2. ForceType 'text/html; charset=UTF-8'
  3. </filesMatch>


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 08 Июня, 2012 - 14:39:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




А для нескольких? Просто добавить такой же блок?
 
 Top
EuGen Администратор
Отправлено: 08 Июня, 2012 - 14:41:43
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




DeepVarvar
Да, в каждый блок будете указывать соответствующие заголовки (они же у Вас разные для всех кодировок)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 08 Июня, 2012 - 14:42:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ага, доперло Закатив глазки Спасибо и +
(Добавление)
Работает. Закатив глазки
Дабы не создавать еще одну тему, продолжу тут же.

Имется:
CODE (text):
скопировать код в буфер обмена
  1. <filesMatch "UTF-8$">
  2. ForceType 'text/javascript; charset=UTF-8'
  3. </filesMatch>
  4.  
  5. <filesMatch "windows-1251$">
  6. ForceType 'text/javascript; charset=windows-1251'
  7. </filesMatch>

Да-да, с Content-Type я не ошибся.
Эти статические файлы создаются с помощью парсера шаблонов на php (json_encode), их содержимое примерно такое (JSONPP):
CODE (javascript):
скопировать код в буфер обмена
  1. __static.callback({
  2.   "templates": [
  3.     {"search": "<div class=\"xxx\">\u041f\u043e\u0438\u0441\u043a</div>"},
  4.     {"header": "<div class=\"yyy\">Header</div>"}
  5.   ],
  6.   "response_status":true,
  7.   "sid":123545346
  8. });

Так вот насколько я знаю, escaped-последовательности это только utf-8.
Т.е. для других кодировок мне нужно будет дописать escaped-конвертер в нормальные символы?
Или этим js на клиенте сам займется?
 
 Top
EuGen Администратор
Отправлено: 08 Июня, 2012 - 15:09:49
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




\udddd - это стандартный формат Unicode-последовательностей, соответственно для иных кодировок нужно будет создавать конвертацию.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 08 Июня, 2012 - 15:14:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




EuGen пишет:
нужно будет создавать конвертацию
Т.е. в обычные буквы?
Если да - то решение я уже нагуглил.
 
 Top
EuGen Администратор
Отправлено: 08 Июня, 2012 - 15:16:39
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Тогда непонятен вопрос (так как тот же google должен был Вам сообщить, что \udddd - это только Unicode)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 08 Июня, 2012 - 15:18:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Сейчас потестирую все это дело и отпишусь...
(Добавление)
Создал два файла, один в utf-8, второй в windows-1251, тут привожу только для windows-1251,
т.к. файлы отличаются только кодировкой и заголовками:
Спойлер (Отобразить)

Так же создал два файла в соответствующих кодировках с таким содержимым:

/home/deep/domains/static.dev/te mplates/test-utf-8
/home/deep/domains/static.dev/templates/test-windows-1251

Спойлер (Отобразить)


Ну и тот самый .htaccess оговоренный выше...

Как оказалось, перекодировать ничего не нужно и сущности правильно воспринимаются самим js.
Протестировано на FF(Linux), GH(Linux), IE(Windows).
 
 Top
EuGen Администратор
Отправлено: 08 Июня, 2012 - 16:46:24
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




А что в файле? Только латиница? И что с другими кодировками (UTF-7 и т.п.)?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 08 Июня, 2012 - 16:50:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




В файлах эскепнутая кириллица (слово "поиск") через json_encode,
с утф-8 файлом больше ничего не производилось,
а вот для вин-1251 использован iconv.

Для остальных кодировок, которые понадобятся, будет сделано аналогично.
 
 Top
EuGen Администратор
Отправлено: 08 Июня, 2012 - 17:01:57
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Так все же преобразование было использовано, что и требовалось увидеть.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
DeepVarvar Супермодератор
Отправлено: 08 Июня, 2012 - 18:41:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




EuGen пишет:
преобразование было использовано
Но не такое:
PHP:
скопировать код в буфер обмена
  1. function decode($match) {
  2.   return mb_convert_encoding('&#' . intval($match[1], 16) . ';', 'UTF-8', 'HTML-ENTITIES');
  3. }
  4.  
  5. $str = '\u041f\u043e\u0438\u0441\u043a';
  6. $str preg_replace_callback('/\\u([0-9a-f]{4})/i', 'decode', $str);

(Добавление)
EuGen пишет:
\udddd - это только Unicode
Да, но именно в таком виде оно и хранится в файлах с другими кодировками.
 
 Top
EuGen Администратор
Отправлено: 08 Июня, 2012 - 21:25:35
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ах да, конечно. Вероятно, мы неверно друг друга поняли в термине "конвертация" - я имел ввиду, что выполнять переход от одной кодировки к другой придется все равно.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Apache и другие веб-серверы »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB