[英]Why a new InputStreamReader won't read the remaining characters in the console?
[英]ExecuteStreamCommand won't read foreign characters
我們將Apache Nifi設置為將文件寫入本地驅動器,然后運行處理這些文件並輸出對“ response”屬性的響應的程序。 這是一個JSON字符串,然后我們將其傳遞給API以更新記錄。
但是,問題在於,盡管我們可以成功編寫,讀取和處理文件,但Nifi無法理解響應文本中的非英語字符。 當我們發回響應時,這會導致名稱被破壞。 這僅適用於我們從程序收到的JSON字符串。
Nifi正在運行Windows 10環境當我們使用Nifi輸出的文件手動運行程序時,我們將獲得正確的輸出。 問題僅發生在Nifi中。
為了提供示例,輸入json是:
{
"player" : "mörkö",
"target" : "goal",
"didhitin" : ""
}
這存儲在我們的程序工作文件夾中,我們使用ExecuteStreamCommand調用程序,並以輸入的JSON文件作為參數。 處理JSON,我們的程序輸出以下JSON,然后將其存儲到流文件的響應屬性中:
{
"player" : "mörkö",
"target" : "goal",
"didhitin" : "true"
}
但是,問題在於,當Nifi將其讀取到流文件的響應屬性中時,它將變為
{
"player" : "m¤rk¤",
"target" : "goal",
"didhitin" : "true"
}
(不是實際過程,但足夠接近以證明問題所在)
當我們將其提供給API時,它們將失敗或破壞原始名稱(在這種情況下為播放器的值)。 兩者都不是理想的輸出。
到目前為止,我們已經發現這很可能是編碼問題,但是我們還沒有找到改變Nifi編碼以解決錯誤讀取字符的方法。
通過在程序的開頭添加以下行來設法解決此問題:
Console.OutputEncoding = Encoding.UTF8;
這有效地強制程序輸出UTF-8字符,該字符將與其余流程保持一致。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.