Русские символы powershell - zabbix_sender

Я изменил некоторые коды и обновил здесь. Обычно я предпочитаю объявлять click event in JQuery вместо использования onClick=functionName();

Итак, я изменил ваш HTML (просто удалил onClick = **) и удалил функцию также и объявить событие click, а затем вызвали .append() ..

$('.example-default-value').each(function() {
    var default_value = this.value;
    $(this).focus(function() {
        if(this.value == default_value) {
            this.value = '';
        }
    });
    $(this).blur(function() {
        if(this.value == '') {
            this.value = default_value;
        }
    });
});
$('#myBtn').click(function(e){
e.preventDefault();
$('#example').append($('#example-textarea').val());

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="example" style="border: 1px solid rgb(204, 204, 204); margin: 5px 0pt; padding: 5px;">Example div</div>
<form>
    <div><textarea class="example-default-value" id="example-textarea" style="width: 400px; height: 50px;">Type some text in here to be appended</textarea></div>
    <div><input id="myBtn" type="button" value="Append" /></div>
</form>

Предполагая, что вы связали JQuery в своем код уже. Если нет, добавьте Jquery в свой файл, поместив эту строку

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

0
задан valentusys 19 January 2019 в 20:20
поделиться

1 ответ

Несмотря на то, что у меня нет zabbix, я пытаюсь просто выполнить cmd-файл, который не выполняет ничего, кроме echo %1, я также обнаружил, что chcp 65001 не сработал так, как ожидалось.

По-видимому, выполнение chcp 65001 только устанавливает для OutputEncoding консоли значение UTF-8, что недостаточно. Вы также должны изменить собственный PowerShells $OutputEncoding (который также подразумевает использование chcp 65001).

Чтобы заставить PowerShell использовать UTF-8 при взаимодействии с внешними утилитами, для меня работал следующий код:

$oldOutputEncoding = $OutputEncoding
$oldConsoleEncoding = [Console]::OutputEncoding

# change the output encoding to use UTF-8
$OutputEncoding = New-Object System.Text.Utf8Encoding
[Console]::OutputEncoding = New-Object System.Text.Utf8Encoding

$oldConsoleEncoding

# This is where your zabbix related code goes to finally execute the zabbix_sender.exe 
# In my test case I'm just running a cmd file that does nothing more then echo the input parameter back to console.
& "D:\blah.cmd" "русский"

# switch back to the original output encoding whe finished
$OutputEncoding = $oldOutputEncoding
[Console]::OutputEncoding = $oldConsoleEncoding

То же самое можно сделать для [Console]::InputEncoding, если PowerShell должен получать строки UTF8 из внешних приложения.

Вы можете увидеть текущую кодировку для вывода, просто набрав $OutputEncoding в PowerShell. На моей машине это то, что я получаю:

IsSingleByte      : True
BodyName          : iso-8859-1
EncodingName      : West-Europees (Windows)
HeaderName        : Windows-1252
WebName           : Windows-1252
WindowsCodePage   : 1252
IsBrowserDisplay  : True
IsBrowserSave     : True
IsMailNewsDisplay : True
IsMailNewsSave    : True
EncoderFallback   : System.Text.InternalEncoderBestFitFallback
DecoderFallback   : System.Text.InternalDecoderBestFitFallback
IsReadOnly        : True
CodePage          : 1252

После выполнения $OutputEncoding = New-Object System.Text.Utf8Encoding это показывает это:

BodyName          : utf-8
EncodingName      : Unicode (UTF-8)
HeaderName        : utf-8
WebName           : utf-8
WindowsCodePage   : 1200
IsBrowserDisplay  : True
IsBrowserSave     : True
IsMailNewsDisplay : True
IsMailNewsSave    : True
IsSingleByte      : False
EncoderFallback   : System.Text.EncoderReplacementFallback
DecoderFallback   : System.Text.DecoderReplacementFallback
IsReadOnly        : True
CodePage          : 65001

Надеюсь, это поможет

0
ответ дан Theo 19 January 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: