Я изменил некоторые коды и обновил здесь. Обычно я предпочитаю объявлять 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>
Несмотря на то, что у меня нет 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
Надеюсь, это поможет