JCA 1.7 specification通過尋找我只能找到在其上的資源適配器Deployment Descriptor例子之一以下的(第13章:消息流入P 13-50): 這個例子示出UTF-8編碼的使用,但是沒有什麼說這是否是示例插圖的可選選項或文件字符編碼的必須限制。JCA部署描述符(ra.xml)字符編碼應該是什麼?
我問這個,因爲我正在寫一個Java程序來讀取這些文件之一,FindBugs™是給我這個消息:
DM_DEFAULT_ENCODING:依賴於默認編碼 發現調用的方法它將執行一個字節到字符串(或 字符串到字節)的轉換,並假定默認平臺 編碼是合適的。這會導致應用程序行爲 因平臺而異。使用替代API並明確指定字符集名稱或字符集對象。
在這個Java代碼片斷4號線就是將指定的字符編碼:
01. byte[] contents = new byte[1024];
02. int bytesRead = 0;
03. while ((bytesRead = bin.read(contents)) != -1)
04. result.append(new String(contents, 0, bytesRead));
那麼,是否可以指定該文件的預期編碼在這種情況下不?
UTF-8好。你可以在代碼中看到FindBugs警告嗎? –
@Thomas它不是關於UTF-8的好壞:)它更多的是關於用戶是否可以指定其他字符編碼。爲了您的方便,我提供了一個示例代碼。 –
如果使用'new String(contents,0,bytesRead,StandardCharsets.UTF_8)',FindBugs警告應該消失。您應該在XML頭文件和代碼中指定相同的字符集。我不知道有一個限制,說你必須使用UTF-8。 –