|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Не получается перенаправление Clipboard -> STDOUT и STDIN -> File в UTF-8 кодировке |
|
Любой язык - [решено] Не получается перенаправление Clipboard -> STDOUT и STDIN -> File в UTF-8 кодировке
|
Новый участник Сообщения: 8 |
Добрый вечер, уважаемые форумчане! Есть файл out.txt, сохраненный в кодировке 65001 (UTF-8) через AkelPad. При попытке выполнить
Текст в консоль выводится нормально. А при выполнении файл out2.txt при открытии AkelPad'ом в строке состояния определяется как 1251 (ANSI - кириллица). Как сделать, чтобы выходной файл out2.txt был в той же кодировке, что и входной? В 1251 я работал с буфером обмена при помощи getclip.exe. Но в связи с тем, что он не поддерживает UTF-8, в консольное окно ничего не выводят. Хотелось бы найти достойную замену getclip. Попробовал nclip, но при chcp 65001 он выводит в консоль квадратики и портит кодировку у символа ö (cmd.jpg): c:\nncron>chcp 65001 && nclip -o | c:\nncron\GnuWin32\bin\iconv.exe Active code page: 65001 <tr xmlns="http://www.w3.org/1999/xhtml"><td align="left" nowrap=""><small>��������</small></td></tr> <tr xmlns="http://www.w3.org/1999/xhtml"><td><select multiple="multiple" class="or done chosen" style="width: 236px; display: none;" id="props_manufilter" name="props_manufilter"> <option value="">���</option> <option value="13562">AEG</option> <option value="13564">Bomann</option> <option value="13565">Bosch</option> <option value="14021">Campingaz</option> <option value="14098">Char-Broil</option> <option value="13382">Clatronic</option> <option value="13581">Cloer</option> <option value="14045">Cuisinart</option> <option value="13582">DeLonghi</option> <option value="13849">DS Produkte</option> <option value="13833">Efbe Schott</option> <option value="11090">Electrolux</option> <option value="10404">Grundig</option> <option value="13568">Krups</option> <option value="14028">Landmann</option> <option value="14016">Lotus Grill</option> <option value="12139">Medion</option> <option value="13684">Petra</option> <option value="10213">Philips</option> <option value="13609">Rommelsbacher</option> <option value="13881">Rosle</option> <option value="13698">Russell Hobbs</option> <option value="13836">Salco</option> <option value="13611">Severin</option> <option value="13742">Siemens</option> <option value="13667">Steba</option> <option value="13715">Suntec</option> <option value="13572">Tefal</option> <option value="10315">Thomson</option> <option value="13573">Unold</option> <option value="10184">Verschiedene</option> </select></td></tr> - то же самое - 1251 (ANSI - кириллица), но при этом AkelPad в отличие от cmd, видит русские символы. Так как же добиться, чтобы из буфера обмена передавался Unicode в окно командной строки? Я пока нашел такой способ: вставкой в окно cmd через Right MB. Шрифт в cmd выбран "Lucida console". c:\nncron>chcp Active code page: 65001 c:\nncron><option value="13881">Rösle</option> The syntax of the command is incorrect. c:\nncron>chcp 1251 Текущая кодовая страница: 1251 c:\nncron><option value="13881">Rösle</option> Ошибка в синтаксисе команды. ![]() Но мне надо, чтобы это делало какое-либо консольное приложение для работы с буфером обмена. Как это сделать? |
|
Отправлено: 21:23, 28-06-2015 |
Новый участник Сообщения: 8
|
Профиль | Сайт | Отправить PM | Цитировать Foreigner, Kazun, только сейчас заметил, что длина строки в output ограничена шириной буфера экрана cmd. Можно как-то снять это ограничение?
Попробовал настроить Microsoft.PowerShell_profile, указав в нем значение $buffer.Width = 99999 (большее 9999), но при старте консоли PS: Windows PowerShell Copyright (C) 2009 Microsoft Corporation. All rights reserved. Exception setting "BufferSize": "Cannot set the buffer size because the size specified is too large or too small. Parameter name: value Actual value was 99999,9999." At C:\Users\054\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1:6 char:10 + $console. <<<< BufferSize = $buffer + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : PropertyAssignmentException в текстовом файле строки не ограничивались длиной, равной ширине буфера консоли? |
Отправлено: 01:47, 19-12-2015 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1758
|
c:\>powershell -sta -c "add-type -assembly system.windows.forms; [windows.forms.clipboard]::gettext() | out-file -width 999 out.txt" > help out-file -parameter 'width' -Width <Int32> Specifies the number of characters in each line of output. Any additional characters are truncated, not w rapped. If you omit this parameter, the width is determined by the characteristics of the host. The defau lt for the Windows PowerShell console is 80 (characters). |
Последний раз редактировалось Foreigner, 19-12-2015 в 09:55. Отправлено: 08:55, 19-12-2015 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Foreigner, то есть, получается, что при перенаправлении неявно работает «Out-File»?
|
Отправлено: 12:18, 19-12-2015 | #13 |
Ветеран Сообщения: 1758
|
Iska, Просто у него есть параметры по умолчанию, в данном случае ширина строки равна ширине консоли. Параметр width переписывает эти установки. Я так понимаю. А простое перенаправление ">" это и есть out-file без параметров (так вроде объяснял Kazun, могу и ошибаться)
|
Отправлено: 12:36, 19-12-2015 | #14 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
|
|
Отправлено: 12:49, 19-12-2015 | #15 |
Новый участник Сообщения: 8
|
Профиль | Сайт | Отправить PM | Цитировать Foreigner, заработало, спасибо, для использования кодировки UTF-8 в выходном файле я использовал доп параметр Encoding.
powershell -sta -c "add-type -assembly system.windows.forms; [windows.forms.clipboard]::gettext() | out-file -width 20 -Encoding utf8 out.txt" И еще команда help выдает нехватку памяти. |
Отправлено: 00:31, 27-12-2015 | #16 |
Новый участник Сообщения: 8
|
Профиль | Сайт | Отправить PM | Цитировать Цитата x_seed@vk:
Видать, pclip, nclip, getclip, clop и иже с ними делались исключительно под определенную кодовую страницу и не предназначены для работы с Unicode. А вот PowerShell с его gettext() способен это сделать. » Нашел еще одну утилиту paste.exe с http://www.c3scripts.com/tutorials/msdos/paste.html (не путать с paste.exe из unixutils, как я), которая прекрасно справилась с этой задачей. Достаточно выставить codepage в utf8: и текст выведется на консоль в utf-8, как положено. |
------- Отправлено: 02:55, 27-12-2015 | #17 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Не отображаются нормально в mc-light тексты в utf кодировке | Dezz | Программное обеспечение Linux и FreeBSD | 9 | 10-05-2020 22:22 | |
[решено] Создание и запись в файл в кодировке 1200 (UTF 16 LE) | eus_deus | AutoIt | 5 | 08-09-2013 00:01 | |
Кодирование и декодирование UTF-8,UTF-16? | Killer_13 | Хочу все знать | 5 | 10-02-2012 00:00 | |
VBS/WSH/JS - [решено] Как создать файл в кодировке UTF-8 с помощью VBScript? | Zeron | Скриптовые языки администрирования Windows | 2 | 30-05-2011 03:50 | |
Запуск доп.программы по условию в консоли(STDOUT) первой. | Dobrinia | AutoIt | 3 | 18-01-2011 12:31 |
|