Ruby хорошо работает с символом Unicode в именах файлов в Mac OS X и в Linux, но почему для его работы в Windows потребовалось не менее 2 лет? - PullRequest
0 голосов
/ 27 июня 2010

Ruby хорошо работает с символом Unicode в пути к файлу и именах файлов в Mac OS X и в Linux, но почему, чтобы заставить его работать в Windows, это заняло более 2 лет?

Я просто смотрел на GoogleКод Jam.Люди решают нетривиальные проблемы в течение нескольких часов.На работе я могу себе представить решение проблемы имени файла или пути с использованием символов Юникода, даже если нам нужно записать ее в стандартной библиотеке, чтобы ее можно было решить в течение дня, двух, нескольких дней или 1 или 2 недель?Но 2 года?

В чем может быть причина?Я думаю, что Mac OS X и Linux могли бы работать, как это было, потому что они использовали UTF-8, и большая часть программного кода ASCII может хорошо работать с UTF-8 без каких-либо изменений.

Windows может возвращать имена файловили путь в UTF-16, поэтому он более сложный, но есть функции для преобразования UTF-16 в UTF-8 и наоборот, так что это не достаточно решаемая проблема?

Ответы [ 2 ]

2 голосов
/ 27 июня 2010

Поскольку для выполнения каждой тривиальной операции вам необходим огромный слой между ОС и вашей программой.

Даже fopen() не работает с UTF-8 в Windows.Другими словами, причина в том, что Windows Unicode API это ... дерьмо (извините всех разработчиков Windows)

Так что поддерживать Unicode в Windows очень сложно, в то время как все другие ОС живут счастливо с UTF-8.

2 голосов
/ 27 июня 2010

Конечно, это решаемая проблема, но я думаю, что никто из основной команды не использует Windows для разработки. Для таких тем решение OSX / Linux / BSD / ... доступно быстро, так как в большинстве случаев это всего лишь одно решение для всех этих платформ, и именно эти платформы в основном используются разработчиками ядра и людьми, которые закрывают ядро ​​(т.е. готовы предложить исправление и предлагают поддержку). Кроме того, имейте в виду, что основной сценарий использования Ruby - веб-приложения, и, по крайней мере, в среде Ruby использование Windows для развертывания довольно редко.

Для помощи настольным / консольным приложениям Ruby популярен только в OSX, насколько я понимаю. В Linux Python довольно доминирует в этой области, а в Windows такого нет (возможно, VBScript, хотя), поскольку у вас часто нет небольших приложений, взаимодействующих друг с другом (консольные программы, каналы, принцип KISS, принцип UNIX, все не очень часто встречается в Windows, вы должны написать сервис для чего угодно и так далее). Но я не могу судить об этом, поскольку я годами не пользовался Windows. Поэтому у вас есть только горстка людей, действительно имеющих эту проблему. И если никто из этих людей не хочет решить проблему, это займет два года.

...