[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Кодировки в именах файлов
LRCenter
Пытаюсь транслитерировать имена файлов - получаются какие-то каракули. Регистр меняется, пробел заменяется на "_" - все ок, а вот кирилицу киргизит. Скрипт в кодировке ANSI,
оперпционка winXP, под ней и клиент и сервер.


function FileLoadMod($nam){
$namex=strtolower($nam);
$namex=strtr($namex,"абвгдезийклмнопрстуфхцы ","abvgdezijklmnoprstufhcy_");
$namex=strtr($namex,array("ё"=>"jo","ж"=>"zh","ч"=>"ch","ш"=>"sh","щ"=>"shh","ь"=>"","ъ"=>"","ю"=>"yu","я"=>"ya","э"=>"ye"));
return $namex;}


Как бы так сделать чтоб транслитерировал в любом случае?



Спустя 1 час, 27 минут, 36 секунд (23.07.2010 - 19:55) FatCat написал(а):
Сто лет назад писал для своих нужд:
	function ru2en($txt){
$ru = explode(" ","е ё ж ч ш ю я а б в г д з и й к л м н о п р с т у ф х ц щ ы э");
$en = explode(" ","je jo zh ch sh ju ja a b v g d z i j k l m n o p r s t u f h c w y e");
for($i=0;$i<count($en);$i++)$txt = str_replace($ru[$i],$en[$i],strtolower($txt));

return $txt;
}


В сочетании с
setlocale(LC_ALL, 'ru_RU.CP1251');
работает совершенно беспроблемно.

Спустя 41 минута, 24 секунды (23.07.2010 - 20:37) LRCenter написал(а):
А куда засунуть
setlocale(LC_ALL, 'ru_RU.CP1251');
?

Спустя 6 минут, 23 секунды (23.07.2010 - 20:43) Lenarfate написал(а):
думаю, в файл с основной реализацией скрипта

Спустя 2 минуты, 27 секунд (23.07.2010 - 20:46) Basili4 написал(а):
Lenarfate
Зря ты это сказал. после твоего ответа будут еще куча вопросов.

по теме там где функцию определил в тот файл и вставляй

function FileLoadMod($nam){

Спустя 1 минута, 8 секунд (23.07.2010 - 20:47) Lenarfate написал(а):
smile.gif

Спустя 9 минут, 32 секунды (23.07.2010 - 20:56) LRCenter написал(а):
setlocale(LC_ALL, 'ru_RU.CP1251');
- Не помогло.
Попробовал также
$namex=iconv('windows-1251', 'utf-8', $namex);

Все равно киргизит только по-другому.

Спустя 2 минуты, 11 секунд (23.07.2010 - 20:58) Lenarfate написал(а):
лучше все в utf-8 делай.создай файл .htaccess и пиши в нем AddDefaulCharset UTF-8 и будет тебе счастье)

Спустя 1 минута, 39 секунд (23.07.2010 - 21:00) LRCenter написал(а):
Цитата (Lenarfate @ 23.07.2010 - 23:58)
лучше все в utf-8 делай.создай файл .htaccess и пиши в нем AddDefaulCharset UTF-8 и будет тебе счастье)

С этим понятно все. Но это сейчас не приемлемо.

Спустя 3 минуты, 1 секунда (23.07.2010 - 21:03) twin написал(а):
Тут поройся.

Спустя 12 секунд (23.07.2010 - 21:03) Lenarfate написал(а):
а кой смысл делать в сp-1251??

Спустя 8 минут, 27 секунд (23.07.2010 - 21:12) LRCenter написал(а):
Никакого. Знаю что нерационально, просто переделывать сейчас все нет возможности. Глюки вылезут

twin, там просто про транслитерацию строк, мне с этим все понятно. Меня интересует как строку с именем файла в одной кодировке перобразовать в другую. И вообще непонятно в какой кодировке имя файла в винде. Если у меня скрипт листинга папки в 1251, корячит имена файлов на кириллице.

Спустя 2 минуты, 22 секунды (23.07.2010 - 21:14) Lenarfate написал(а):
а переделывать много не надо же!просто меняй кодировки, а 1251 - это зло! по мне так wink.gif

Спустя 3 минуты, 35 секунд (23.07.2010 - 21:18) LRCenter написал(а):
Lenarfate, а спецсимволы в коде? А данные которые хранятся в 1251? Или еще какая-нибудь вата вылезет. sad.gif

Спустя 2 минуты, 30 секунд (23.07.2010 - 21:20) Lenarfate написал(а):

Спустя 15 минут, 22 секунды (23.07.2010 - 21:36) LRCenter написал(а):
Я понял в чем проблема: интерфейсом для выбора файлов является flash-объект, видимо внутри него и корячит кодировку.


_____________
Меньше кода - меньше багов ©
Быстрый ответ:

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