|
Результат метода %Exists класса %File
|
|||
---|---|---|---|
#18+
В Cache под линуксом метод ##class(%File).Exists() возвращает 1 для имен с русскими буквами. Не зависимо от того, есть ли файл или нет. Есть три версии Cache, на них и попробовал. Cache for UNIX (SUSE Linux Enterprise Server for x86-64) 2016.2.1 (Build 803U) Wed Oct 26 2016 12:35:00 EDTUSER>w ##class(%File).Exists("a") 0 USER>w ##class(%File).Exists("b") 0 USER>w ##class(%File).Exists("c") 0 USER>w ##class(%File).Exists("а") 1 USER>w ##class(%File).Exists("б") 1 USER>w ##class(%File).Exists("в") 1 Cache for UNIX (SUSE Enterprise Server for x86-64) 2010.2.8 (Build 1104U) Sat Feb 11 2012 13:08:18 ESTUSER>w ##class(%File).Exists("a") 0 USER>w ##class(%File).Exists("b") 0 USER>w ##class(%File).Exists("c") 0 USER>w ##class(%File).Exists("а") 1 USER>w ##class(%File).Exists("б") 1 USER>w ##class(%File).Exists("в") 1 А вот с виндовс всё норм. Cache for Windows (x86-64) 2017.1 (Build 792U) Mon Mar 20 2017 19:13:14 EDTUSER>w ##class(%File).Exists("a") 0 USER>w ##class(%File).Exists("b") 0 USER>w ##class(%File).Exists("c") 0 USER>w ##class(%File).Exists("а") 0 USER>w ##class(%File).Exists("б") 0 USER>w ##class(%File).Exists("в") 0 Такое нормально для *nix версии? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 15:22 |
|
Результат метода %Exists класса %File
|
|||
---|---|---|---|
#18+
П.С.М. , вариант для Линукса Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 15:28 |
|
Результат метода %Exists класса %File
|
|||
---|---|---|---|
#18+
Хотя это же у нас ГТ.М... Т.ч. тебе не подойдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 15:29 |
|
Результат метода %Exists класса %File
|
|||
---|---|---|---|
#18+
krvsa, Спасибо конечно, но через линуксовую команду я тоже могу)) Через $zf(-1), например: Код: sql 1.
0 - найден 1 - не найден Хотелось бы понять на кой меня метод проверки файла в заблуждение вводит))) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 15:49 |
|
Результат метода %Exists класса %File
|
|||
---|---|---|---|
#18+
Полагаю, есть какая то проблема с кодировкой Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 16:04 |
|
Результат метода %Exists класса %File
|
|||
---|---|---|---|
#18+
DAiMorПолагаю, есть какая то проблема с кодировкой Ага, похоже на правду. С $zcvt работает. Спасибо) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2017, 16:18 |
|
Результат метода %Exists класса %File
|
|||
---|---|---|---|
#18+
Предлагаю проверить умолчания кодировок: 20593315 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2017, 00:05 |
|
Результат метода %Exists класса %File
|
|||
---|---|---|---|
#18+
П.С.М., Скорее всего нужно выправить кодировку для системных вызовов, она должна быть UTF-8 Заходим в область %SYS запускаем программу do ^NLS, затем : Выбираем 5) Advanced -> 1) Locale definitions На запрос Select a locale : указываем rusw После этого выбираем 5) Copy locale и указываем имя yruw, имя неслучайно, вводите именно такое После создания yruw возвращаемся в прошлое меню (просто Enter без указания пункта),. затем опять выбираем 1) Locale definitions На запрос Select a locale : указываем yruw , так как это новая пользовательская локаль, появятся пункты для редактирования. Выбираем 2) Edit locale -> 6) Defaults for input/output -> 7) System call По умолчанию System call установлен в режим RAW, а нам нужен UTF8 Указываем его (пункт 2) и выходим Enter-ом из меню I/O Table На запрос о сохранении изменений 1 changed property. Save? отвечаем yes Выходим еще на уровень назад и проверяем установки выбрав 1) Display locale После всех изменений должно быть так System call: UTF8 Выходим обратно до самого первого уровня, и выбираем 3) Change locale на запрос Would you like to install a new locale? отвечаем yes, а на качестве локали Select a locale указываем yruw Проверяем настройки текущей локали 1) Display current locale после чего выходим. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2017, 07:14 |
|
Результат метода %Exists класса %File
|
|||
---|---|---|---|
#18+
Ptn, Спасибо за инструкцию. А что если просто для текущей локали Код: plaintext
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2017, 09:38 |
|
Результат метода %Exists класса %File
|
|||
---|---|---|---|
#18+
Да и стоит ли вообще менять? Если $zcvt в принципе хватает для решения проблемы (главное не забыть потом перед вызовом конвертировать в нужную кодировку) ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2017, 09:53 |
|
Результат метода %Exists класса %File
|
|||
---|---|---|---|
#18+
П.С.М.Если $zcvt в принципе хватает для решения проблемы Дополню: код используется на одном боевом сервере и на паре тестовых, никуда более не распространяется, сервер работает. Также, вспомнил, что в некоторых местах еще используется $zcvt для имен файлов/папок. Т.е. изменение кодировки системных вызовов с RAW на UTF8 приведет к необходимости изменения кода уже использующего $zcvt для обращения к файлам. Т.ч. моем случае, наверное, менять и не стоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2017, 10:07 |
|
Результат метода %Exists класса %File
|
|||
---|---|---|---|
#18+
П.С.М....на одном боевом сервере и на паре тестовых, никуда более не распространяется, сервер работает...У нас ситуация несколько иная: код работает на десятках рабочих серверов. Локализацию я контролирую полностью, но как раз этот параметр - System сall I/O table - менять бы не стал, ибо в системный вызов вполне могут передаваться уже закодированные (и не обязательно в UTF8) данные. Пусть лучше программист сам вызывает $zcvt(), когда надо. Сам всё чаще использую $zcvt() в коде, предпочитая иметь на устройстве RAW: чем меньше код зависит от внешних факторов, тем спокойнее мой сон :) Выставить RAW на TCP/IP и File легко: всегда можно докопаться до параметров команды Open , а с System Calls сложнее, т.к. не очевидно, как здесь (временно) поменять таблицу на уровне процесса. Пусть лучше остаётся RAW forever. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2017, 11:25 |
|
|
start [/forum/topic.php?fid=39&msg=39569362&tid=1556293]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 273ms |
total: | 412ms |
0 / 0 |