Serge wrote:Если сменить кодировку app_path на utf-8 приложение не сможет его правильно вывести на экран, но сможет распарсить на компоненты.
Это сути не меняет:
0CodErr wrote:Если путь будет передаваться в UTF8, то нельзя будет присоединить к нему кириллическое "Папка1" в ASCII. Нужен, значит, конвертер. Только непонятно, зачем не русскоязычному пользователю использовать русифицированный вариант программы. В общем, UTF8 только усложняет всё. Должен быть выбор кодировки. Пусть лучше ядро конвертирует, чем приложению придётся таскать конвертер с собой.
Serge wrote:В ядре должна быть одна кодировка.
Ну дык тогда логичнее сделать её
UTF16:
- Она уже используется в SysFn70;
Её использование легко добавить в SysFn2
Обработка строк UTF16 происходит быстрее(нужно меньше проверок)
Serge wrote:Ты просто предлагаешь раздуть ядро, свалив на него функциональность, которой не хочется заниматься самому.
Какая по большому счёту разница, где будет этот код? Разница в том, что ядро и так уже работает и с
ASCII, и с
UTF8, и с
UTF16. По-твоему лучше ещё раз продублировать этот код в приложении вместо того, чтобы просто использовать готовый ядерный код? Можно многое вынести из ядра в драйвера и библиотеки. Но раз уж оно сейчас находится в ядре, то и вполне логично, что эту работу будет выполнять ядро.
Serge wrote:Только не APPDATA, а PROC - данные всего процесса.
Лучше
APPDATA. Представь, что поток работает с
UTF16, и тут БАЦ! и кодировка внезапно сменилась.
Если
AppPath будет только в
UTF8, то
CurrentDirectory и
Params вполне могут быть в другой кодировке. Во первых, как приложению узнать, в какой? Во-вторых, снова нужен конвертер.
SysFn70 может возвращать
UTF16. Если теперь запустить такое приложение, то нам надо указать и имя файла, которое в
UTF16, и параметры, только в какой кодировке не понятно?
Что касается
UTF16, то приложение может проверить, не выходит ли строка за рамки
UCS2, и тогда можно работать с этой строкой с заметным ускорением.
В общем, если даже делать для
unicode одну кодировку, то лучше всего подходит для этого
UTF16. переключение
ASCII\
unicode, разумеется, необходимо.