понедельник, 20 декабря 2010 г.

Почему CP_ACP не может быть UTF-8?

Это перевод Why can't the CP_ACP be UTF-8? Автор: Майкл Каплан.

Bart van der Werf спросил:
Я работаю над приложением с 8-битовыми строками, которое работает с несколькими языками. И я был удивлён, узнав, что ACP (кодовая страница ANSI) не может принять utf8 как допустимую MBCS кодировку.

Почему так? Разве это не позволило бы всевозможным старым приложениям как-то стать многоязычными за одну ночь?
Во-первых, я первым раскритикую поиск на этом сайте, хотя часто он работает. Но в этом случае поиск по словам ACP UTF-8 возвращает первым постом "Может ли CP_ACP быть UTF-8?", написанный несколько месяцев назад (он также находит тонну не связанных записей, но важно что он находит нужный первым!).

Чтобы сказать что-то по теме: да, он прав - это сделало бы некоторые операции проще. Но кроме этого: если взять текущую модель, которая насмерть привязана к системной странице по умолчанию - означает ли это, что вы можете просто использовать UTF-8 ACP для работы с локалями Unicode? И сделает ли это проще интернационализацию, если вы заставите изменить системную настройку, чтобы приложение заработало? Угх-х. Это сломает любое уже написанное приложение, рассчитывающее на текущее поведение.

И тогда, конечно же, у вас появляется стоимость огромных усилий PM/тестирования/разработки, чтобы привести каждую "A"-функцию (и нижележащие за ними функции ядра) до уровня обработки до четырёх символов за раз, когда многие из них строго ограничены одним или двумя символами. Тысячи функций во всей системе (к примеру, для оконных сообщений). И некоторые из них были написаны ещё в Win 3.x!

Не будет преувеличением предположить, что этот процесс будет стоить миллиарды долларов, затронет тысячи людей и займёт годы. И всё это ради кода, который считается устаревшим. Не существует способа, чтобы это предложение получило бы одобрение...

This post brought to you by Ω (U+03a9, a.k.a. GREEK CAPITAL LETTER OMEGA)

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.