LINUX.ORG.RU

История изменений

Исправление Xenius, (текущая версия) :

Лишнее неудобство для пользователя.

Что неудобство? Возможность выбрать локаль для каждого приложения отдельно? Это не неудобство, а киллер-фича.

А чтоб не выбирать вручную, можно просто сделать какой-нибудь параметр в мета-информации приложения, который говорит какую кодовую страницу использовать для этого приложения. В общих настройках задавать кодовую страницу по умолчанию.

Таким образом, новое приложение с правильным инсталлером — работает сразу и показывает текст в UTF-8, приложение, не устанавливающее нужный параметр (хоть старое, хоть новое) — работает сразу, если выставлена нужная дефолтная страница или после установки этой страницы в настройках совместимости приложения, если какая-то другая. Или после установки другой кодовой страницы в общих настройках системы.

Может быть можно было бы и ещё какой-нибудь аналог #define UNICODE сделать, чтоб информация о том, что приложение использует UTF-8 была и в самом исполнимом файле, главное чтоб он не мешал компилированию на системах отличных от Windows.

Так безо всяких костылей char == ANSI, wchar == юникод

А UTF-8 где тогда?

И как в таком случае без костылей запустить программу, которая уже работает в линуксе с юникодом?

Если приложение написано правильно (в соответствии с winapi, TCHAR для символов)

Если приложение написано «правильно» — оно на линуксе даже не скомпилируется, разве нет? Значит это приложение написано неправильно.

спорное утверждение

Приведи хоть один аргумент против.

Исправление Xenius, :

Лишнее неудобство для пользователя.

Что неудобство? Возможность выбрать локаль для каждого приложения отдельно? Это не неудобство, а киллер-фича.

А чтоб не выбирать вручную, можно просто сделать какой-нибудь параметр в мета-информации приложения, который говорит какую кодовую страницу использовать для этого приложения. В общих настройках задавать кодовую страницу по умолчанию.

Таким образом, новое приложение с правильным инсталлером — работает сразу и показывает текст в UTF-8, приложение, не устанавливающее нужный параметр (хоть старое, хоть новое) — работает сразу, если выставлена нужная дефолтная страница или после установки этой страницы в настройках совместимости приложения, если какая-то другая. Или после установки другой кодовой страницы в общих настройках системы.

Так безо всяких костылей char == ANSI, wchar == юникод

А UTF-8 где тогда?

И как в таком случае без костылей запустить программу, которая уже работает в линуксе с юникодом?

Если приложение написано правильно (в соответствии с winapi, TCHAR для символов)

Если приложение написано «правильно» — оно на линуксе даже не скомпилируется, разве нет? Значит это приложение написано неправильно.

спорное утверждение

Приведи хоть один аргумент против.

Исходная версия Xenius, :

Лишнее неудобство для пользователя.

Что неудобство? Возможность выбрать локаль для каждого приложения отдельно? Это не неудобство, а киллер-фича.

А чтоб не выбирать вручную, можно просто сделать какой-нибудь параметр в мета-информации приложения, который говорит какую кодовую страницу использовать для этого приложения. В общих настройках задавать кодовую страницу по умолчанию.

Таким образом, новое приложение с правильным инсталлером — работает сразу и показывает текст в UTF-8, приложение, не устанавливающее нужный параметр (хоть старое, хоть новое) — работает сразу, если выставлена нужная дефолтная страница или после установки этой страницы в настройках совместимости приложения, если какая-то другая. Или после установки другой кодовой страницы.

Так безо всяких костылей char == ANSI, wchar == юникод

А UTF-8 где тогда?

И как в таком случае без костылей запустить программу, которая уже работает в линуксе с юникодом?

Если приложение написано правильно (в соответствии с winapi, TCHAR для символов)

Если приложение написано «правильно» — оно на линуксе даже не скомпилируется, разве нет? Значит это приложение написано неправильно.

спорное утверждение

Приведи хоть один аргумент против.