|
UTF-8 в консоли
|
|||
---|---|---|---|
#18+
Мне нужно использовать консольную утилиту (sqlplus от Oracle) на ПК с Windows. Хотелось бы использовать юникод. Сделал так. Вызываемый значок: %windir%\system32\cmd.exe /U /C C:\Oracle\connect.bat (в свойствах значка выбран шрифт Consolas) Файл connect.bat: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Работает почти все, но если первым символом в строке идет строчная русская буква, то она портится: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Ну и на входе кириллица читается с перебоями (искажается). Если же кодировку оставить CP866, тогда с кириллицей все нормально, но в БД в некоторых местах используются юникодные символы и в CP866 они пропадают. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2020, 23:57 |
|
UTF-8 в консоли
|
|||
---|---|---|---|
#18+
Вообщем это невозможно в cmd, во всяком случае в Windows 7. В консоли используется UCS-2, а UTF-8 работает через какие-то костыли. Кроме того, вход в любом случае не юникодный. Поставил msys2, запускаю клиента из него. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 10:31 |
|
UTF-8 в консоли
|
|||
---|---|---|---|
#18+
Alibek B., а при чём здесь cmd ? Во-первых, непонятно зачем использовать в качестве связки неудачную корявую поделку 90-х годов прошлого века ? ( это про cmd.exe ) А, во-вторых, показанные артефакты с корявым изображением некоторых юникодных символов в консоли не имеют к cmd.exe никакого отношения, это так работает утилита sqlplus.exe, а, точнее, если копнуть вглубь, так работает "C" RTL ввода-вывода этой и многих других консольных сишных утилит. Если хотите получить внешне корректный ввод/вывод юникода в стареньком терминале Windows ( новый доступен только в Windows 10 ), то ваше приложение должно пользоваться консольным Win32 API, а не "C" RTL. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 17:58 |
|
UTF-8 в консоли
|
|||
---|---|---|---|
#18+
volodin661Во-первых, непонятно зачем использовать в качестве связки неудачную корявую поделку 90-х годов прошлого века ? А что, в PowerShell работа с вводом/выводом UTF-8 лучше?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 18:34 |
|
UTF-8 в консоли
|
|||
---|---|---|---|
#18+
volodin661 А, во-вторых, показанные артефакты с корявым изображением некоторых юникодных символов в консоли не имеют к cmd.exe никакого отношения, это так работает утилита sqlplus.exe, а, точнее, если копнуть вглубь, так работает "C" RTL ввода-вывода этой и многих других консольных сишных утилит. Тем не менее, тот же sqlplus.exe без проблем работает с UTF-8, когда его хостит msys2. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 19:50 |
|
UTF-8 в консоли
|
|||
---|---|---|---|
#18+
Alibek B.когда его хостит msys2. Ты не поверишь, но у MSYS - не текстовое окно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 21:18 |
|
UTF-8 в консоли
|
|||
---|---|---|---|
#18+
Можно подумать, что cmd.exe фрагмент дисплея в текстовый режим переводит. Важно то, что он может быть хостом для консольных приложений. И что эти консольные приложения правильно работают с юникодом. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 21:23 |
|
UTF-8 в консоли
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov volodin661Во-первых, непонятно зачем использовать в качестве связки неудачную корявую поделку 90-х годов прошлого века ? А что, в PowerShell работа с вводом/выводом UTF-8 лучше?.. Уточняю, вопрос был про то, лучше ли будет результат, если запускать sqlplus.exe не из-под cmd, a из под powershell ? Скорее всего, будет то же самое, но эксперимент - критерий истины, проще всего, если эксперимент проведёт сам Alibek B. с той же sqlplus + powershell любой версии Если же вопрос был про сравнение двух продуктов, первый (cmd) - неизвестного автора и трудозатратами 'полторы недели на коленке' и второй (powershell) - 20 лет разработки нескольких сотен человек с трудозатратами ~ 1 000 000 000 USD, то на него я отвечать не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 23:11 |
|
UTF-8 в консоли
|
|||
---|---|---|---|
#18+
Alibek B. Можно подумать, что cmd.exe фрагмент дисплея в текстовый режим переводит. Важно то, что он может быть хостом для консольных приложений. И что эти консольные приложения правильно работают с юникодом. Нет никакой проблемы самому стать царём хостом, запустить sqlplus.exe с нужным environment, поймать его stdout и вывести самому, уже используя Win32 Console API. И всё будет хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 23:21 |
|
UTF-8 в консоли
|
|||
---|---|---|---|
#18+
volodin661 если запускать sqlplus.exe не из-под cmd, a из под powershell ? Никакой разницы. Даже эксперименты с FAR (который вроде бы использует именно консольное API) показали, что c UTF там не так просто. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 23:27 |
|
UTF-8 в консоли
|
|||
---|---|---|---|
#18+
volodin661 Нет никакой проблемы самому стать царём хостом, запустить sqlplus.exe с нужным environment, поймать его stdout и вывести самому, уже используя Win32 Console API. Проблема в том, что для этого нужна среда разработки. С помощью bat-файлов хостом не стать. Из готовых и более-менее нормальных инструментов есть разве что ConEmu и MSYS2, последний мне более удобен. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 23:41 |
|
UTF-8 в консоли
|
|||
---|---|---|---|
#18+
Alibek B. volodin661 Нет никакой проблемы самому стать царём хостом, запустить sqlplus.exe с нужным environment, поймать его stdout и вывести самому, уже используя Win32 Console API. Проблема в том, что для этого нужна среда разработки. С помощью bat-файлов хостом не стать. Из готовых и более-менее нормальных инструментов есть разве что ConEmu и MSYS2, последний мне более удобен. Если на клиенте присутствует .Net framework, то такая среда разработки имеется в лице компиляторов C#, VB.NET, JS.NET, сборщика проектов MSBuild и runtime библиотек. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 23:49 |
|
UTF-8 в консоли
|
|||
---|---|---|---|
#18+
Это называется «нет никакой проблемы»? В случае с MSYS2 решение задачи производится в три действия: скачать, выбрать шрифт Consolas, переделать скрипт из bat в sh. Тут действительно нет проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2020, 00:02 |
|
UTF-8 в консоли
|
|||
---|---|---|---|
#18+
Alibek B., приблизительно так: Код: c# 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.
и скачивать ничего не надо ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2020, 00:06 |
|
UTF-8 в консоли
|
|||
---|---|---|---|
#18+
Но вариант с msys2 тоже годится, да. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2020, 00:10 |
|
UTF-8 в консоли
|
|||
---|---|---|---|
#18+
вот этот мне оч. нравился: https://babun.github.io/ ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2020, 00:12 |
|
|
start [/forum/search_topic.php?author=SergTN&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
12ms |
get forum list: |
17ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 11482ms |
total: | 11658ms |
0 / 0 |