Eclipse и новые строки Windows

Существует SpiderMonkey, механизм JavaScript, записанный в C и Носорог , реализация JavaScript в Java.

178
задан Line 16 August 2017 в 13:18
поделиться

3 ответа

Я столкнулся с той же проблемой, провел небольшое исследование и пришел к следующему выводу. Это для php5 в Windows; это, вероятно, верно для других платформ, но я не проверял.

  1. ВСЕ функции файловой системы php (dir, is_dir, is_file, file, filemtime, sizes, file_exists и т. д.) принимают и возвращают имена файлов только в ISO-8859-1 , независимо от default_charset, установленного в программе или ini файлах.

  2. Где имя файла содержит символ Юникода dir-> read вернет его как соответствующий символ ISO-8859-1, если он есть, в противном случае он заменит вопросительный знак.

  3. При ссылке на файл, например, в is_file или файле, если вы передадите имя файла UTF-8 файл не будет найден, если имя содержит какие-либо двухбайтовые или более символы. Однако is_file (utf8_decode ($ filename)) и т. Д. Будет работать при условии, что символ UTF-8 представлен в ISO-8859-1.

Другими словами, PHP5 не может обращаться к файлам с многобайтовыми символами в их именах. вообще.

Если запрашивается URL-адрес UTF-8 с многобайтовыми символами, и он соответствует непосредственно файлу, PHP не сможет открыть файл, потому что не может адресовать его.

Если вам просто нужны красивые URL-адреса на вашем языке предложение использовать mod_rewrite кажется хорошим.

Но если вы храните и извлекаете файлы, загруженные и загруженные пользователями, эта проблема должна быть решена. Один из способов - использовать произвольное (не UTF-8) имя файла, такое как увеличивающееся число, на сервере и индексировать файлы в базе данных или XML-файле или в каком-либо подобном. Другой способ - хранить файлы в самой базе данных как BLOB. Другой способ (который, возможно, легче увидеть, что происходит, и который не вызывает проблем, если ваш индекс будет поврежден), - это самостоятельно закодировать имена файлов - хороший метод - urlencode (sic) всех ваших входящих имен файлов при хранении на сервере. disk и urldecode их перед установкой имени файла в mime-заголовке для загрузки. Все даже слегка необычные символы (кроме%) затем кодируются как% nn, и поэтому любые проблемы с пробелами в именах файлов, Unix

353
ответ дан 23 November 2019 в 20:15
поделиться

Существует удобная утилита bash - dos2unix , которая представляет собой преобразователь формата текстовых файлов DOS / MAC в UNIX, который, если он еще не установлен в вашем дистрибутиве, должен иметь возможность быть легко установленным через менеджер пакетов. Справочная страница dos2unix

8
ответ дан 23 November 2019 в 20:15
поделиться

Вы можете попробовать. Проблема в том, что Windows вставляет возврат каретки, а также перевод строки при вводе новой строки. Unix-системы просто вставляют перевод строки. Таким образом, лишний символ возврата каретки может быть причиной того, что ваше затмение не работает с символами новой строки.

Возьмите один или два файла из вашего проекта и преобразуйте их. Для этого вы можете использовать Notepad ++. Просто откройте файл, выберите «Формат»> «Преобразовать в Unix» (если вы используете Windows).

В Linux просто попробуйте это в командной строке:

sed 's/$'"/`echo \\\r`/" yourfile.java > output.java
3
ответ дан 23 November 2019 в 20:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: