我正在使用Process.BeginOutputReadLine()
通过事件向StringBuilder
发送文本行。但是,BeginOutputReadLine()
无法识别输出编码。我启动的进程以UCS-2 LE
格式返回字符串。因此BeginOutputReadLine()
会返回类似"\0T\0e\0s\0t"
的字符串。以前我使用过具有自动检测编码功能的StandardOutput.ReadToEnd()
文档说StreamReader.Read(...)将使用第一个调用来确定编码(因此将设置StreamReader.CurrentEncoding)。 BeginOutputReadLine()
AsyncStreamReader
创建内部Process.StandardOutput.CurrentEncoding
并从<script>
$(document).ready(function(){
$('#submit').on('click', function(){
$.ajax({
type: 'POST',
async: false,
url: 'data.php',
data:{
"username":$('input[name=username]:checked', '#myForm').val(),
"profession": $('input[name=profession]:checked', '#myForm').val()
},
success: function(response)
{
}
}).error(function(request, status, error){
console.log(e);
});
});
});
</script>
对其ctor进行编码 - 尚未检测到。
如何避免此问题?我需要在进程运行时实时获取输出。尝试创建逐行读取的Task,引发事件以将数据传递给StringBuilder,但最后它会打击:/