Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / В названии файла при сохранении в Windows появляются кракозябры / 16 сообщений из 16, страница 1 из 1
26.05.2017, 16:11
    #39460546
Rastrapovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В названии файла при сохранении в Windows появляются кракозябры
Windows XP, сайт с кодировкой utf-8.
Например, имя файла "fiancée" в БД так и сохраняется, но когда я сохраняю файл в папке (на сервере), имя меняется на "fiancГ©e".
Можно ли как-то сохранить этот файл с правильным названием "fiancée"?
...
Рейтинг: 0 / 0
26.05.2017, 16:15
    #39460551
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В названии файла при сохранении в Windows появляются кракозябры
В какой кодировке имя файла? В какой кодировке читаете список файлов в файловой системе?

Либо всё на utf-8 переводите, либо (предпочтительнее) откажитесь от использования не-латиницы в именах файлов.
...
Рейтинг: 0 / 0
26.05.2017, 16:56
    #39460583
Rastrapovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В названии файла при сохранении в Windows появляются кракозябры
Вообще, по идеи :), и чтение, и запись—всё происходит на utf-8. Проблема возникает только при сохранении файла на сервере.
В БД он хранится с именем "fiancée", а на сервер записывается с "fiancГ©e".

Странно, но чтобы обратится к этому файлу я использую:
Код: php
1.
iconv("cp1251", "utf-8", $word)


А разве не должно было быть наоборот?
Код: php
1.
iconv("utf-8", "cp1251", $word)



vkle , возможности отказаться от не-латиницы нет :(
...
Рейтинг: 0 / 0
26.05.2017, 18:44
    #39460645
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В названии файла при сохранении в Windows появляются кракозябры
Rastrapovich,

По большому счету, файловой системе по барабану, в какой кодировке передаете имя файла - ей человекопонятные имена не требуются. Какая последовательность байтов (минус небольшой список исключений) пришла - такую и запишет в файловый каталог, такую и отдаст при чтении списка. Как эту последовательность байтов трактовать - проблемы программиста, а не файловой системы.

Возможно, программа, которую Вы используете для чтения имён файлов на сервере не понимает utf-8 или вовсе умеет понимать только однобайтовые кодировки. Ну... наверно есть смысл сменить программу-смотрелку на более адекватную.

Вы уверены, что в cp1251 есть ента самая "é"? Не нашли? Забудьте тогда про 1251. Может, какая-нить однобайтовая западно-европейская подойдет...


Rastrapovich vkle , возможности отказаться от не-латиницы нет :(Печально это. Удачи в сборе граблей! Это первые были, вероятно.
...
Рейтинг: 0 / 0
26.05.2017, 19:10
    #39460651
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В названии файла при сохранении в Windows появляются кракозябры
В кодировке 1251 е с аксантом нету. Зато есть в кодировке хтмл: é
...
Рейтинг: 0 / 0
26.05.2017, 19:20
    #39460654
Rastrapovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В названии файла при сохранении в Windows появляются кракозябры
vkle , возможно, я неправильно понял Ваш совет:
автороткажитесь от использования не-латиницы в именах файлов
Суть такова, что эти файлы—это mp3-шные файлы, на которых записаны звучания соответствующих иностранных слов.
В БД слова записываются как "fiancée", а на сервере сохраняются как "fiancГ©e".

Всё работает: слова на серевере с сайта находятся без проблем. Просто чисто с эстетической точки зрения хотелось, чтобы и на серевере файлы хранились с оригинальными названиями.
...
Рейтинг: 0 / 0
26.05.2017, 19:26
    #39460655
Rastrapovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В названии файла при сохранении в Windows появляются кракозябры
ShSergeВ кодировке 1251 е с аксантом нету. Зато есть в кодировке хтмл: é
Я просто подумал, что если можно "вручную" создать файл "fiancée" в Windows (т.е. создать файл и назвать его "fiancée"), то, наверняка, должен и быть способ создать его при помощи php.
...
Рейтинг: 0 / 0
26.05.2017, 19:57
    #39460664
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В названии файла при сохранении в Windows появляются кракозябры
RastrapovichВ БД слова записываются как "fiancée", а на сервере сохраняются как "fiancГ©e".Не гуд.
В базу пишите в одной записи оригинальное имя файла "fiancée" и имя, под которым хранится этот файл на сервере, например "8172398665734723" (случайным образом сгенерированное из допустимых символов уникальное имя) или "4e066bd75423441e28ae6e11d7e58364" (хеш md5 от слова "fiancée"). Если требуется отдать файл клиенту для сохранения, тогда оба поля достаете из базы, по одному обращаетесь к файлу для чтения, по другому - отдаете имя файла для сохранения на клиенте.


RastrapovichПросто чисто с эстетической точки зрения хотелось, чтобы и на серевере файлы хранились с оригинальными названиями.В принципе, любая ОС и ФС, которые нормально поддерживают utf-8, это умеют. Почти у всех линуксов нынче дефолтовая utf-8. Это касаемо эстетики.

Теперь о граблях чисто технических.
А ну как придется Вам перекинуть файлы на другой сервер по FTP - тут сюрпризы будут через раз, зависит и от серверов и от FTP-клиента. Хорошо, если будет возможность потрахтибидохаться и настроить правильно передачу "этих ваших крякозябриков" так, чтоб на новом сервере более-менее читаемые крякозябрики не превратились в тупые никак не читаемые вопросики. А если возможности для трахтибидоха экспериментов не будет - тады как?
Или придется переехать на FreeBSD, где юникод можно, конечно, настроить, но традиционно дефолтовая кодировка таки однобайтовая до сих пор. Или (тьфу-тьфу-тьфу) на виндовый сервер... И тут вся Ваша "эстетика" всем своим не-латинским составом гордо шагает коту под хвост. Ну, на фряхе то при желании любую кодировку в консоли настроите без особых проблем, а на винде - не скажу, не знаю.
...
Рейтинг: 0 / 0
26.05.2017, 21:03
    #39460688
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В названии файла при сохранении в Windows появляются кракозябры
Rastrapovich,

Для винды родная UTF-16 - ее и используй при сохранении, только функцию API тоже надо вызывать Юникодного варианта

CreateFileW (Unicode) а не CreateFileA (ANSI)
...
Рейтинг: 0 / 0
26.05.2017, 22:27
    #39460708
Rastrapovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В названии файла при сохранении в Windows появляются кракозябры
vkle , да, Вы правы. Лучше всё в цифры перевести: цифры, они и в Африке цифры! Спасибо!


Siemargl , +1, хм, а я раньше думал, что Windows использует cp1251/Windows-1251.
...
Рейтинг: 0 / 0
26.05.2017, 22:35
    #39460713
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В названии файла при сохранении в Windows появляются кракозябры
Rastrapovichа я раньше думал, что Windows использует cp1251/Windows-1251.
а немецкая винда тоже в 1251?
...
Рейтинг: 0 / 0
26.05.2017, 22:41
    #39460714
Rastrapovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В названии файла при сохранении в Windows появляются кракозябры
Изопропил,

:)) как-то не подумал про винду на других языках ))
...
Рейтинг: 0 / 0
26.05.2017, 22:47
    #39460718
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В названии файла при сохранении в Windows появляются кракозябры
Rastrapovichа я раньше думал, что Windows использует cp1251/Windows-1251.Ага. А ещё местами cp866 и местами юникод. Для разнообразия в реестр загляните - там вообще кое-где текст представлен в бинарном виде. Адская смесь, в общем.
...
Рейтинг: 0 / 0
26.05.2017, 22:53
    #39460719
Rastrapovich
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В названии файла при сохранении в Windows появляются кракозябры
vkle ,

:)) дааа... век живи—век учись!
...
Рейтинг: 0 / 0
29.05.2017, 07:48
    #39461201
Barlone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В названии файла при сохранении в Windows появляются кракозябры
SiemarglRastrapovich,

Для винды родная UTF-16 - ее и используй при сохранении, только функцию API тоже надо вызывать Юникодного варианта

CreateFileW (Unicode) а не CreateFileA (ANSI)CreateFileW из PHP?
...
Рейтинг: 0 / 0
29.05.2017, 07:53
    #39461203
Barlone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В названии файла при сохранении в Windows появляются кракозябры
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / В названии файла при сохранении в Windows появляются кракозябры / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]