簡體   English   中英

ExecuteStreamCommand不會讀取外來字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM