2012-05-28 57 views
23

我正在嘗試在Oracle's documentations處給出的示例。 java文件是here,如該頁面所示。現在有了這個java文件,我在同一個目錄下保存了一個LabelsBundle.properties文件。Java ResourceBundle在值中導致空格

# This is the default LabelsBundle.properties file 
s1 = computer 
s2 = disk 
s3 = monitor 
s4 = keyboard 

似乎在讀取值時忽略尾隨空白並忽略前導空格。

所以如果我想領先的空間在那裏,我該怎麼辦?

換句話說,有什麼做我需要做的讀取,

computer 

,而不是

computer 

s1價值?

回答

31

Unicode轉義序列\u0020應該這樣做,因爲屬性解析器應將其識別爲實際值,並且Java字符串應將\u0020解釋爲空間的Unicode代碼點。

或者,IIRC,你可以用這個\ my value這樣的反斜線來避開空間。也適用於按鍵。

+0

\ u0020將不進行任何編碼改變工作? 和@Zaki:我試過了,沒有改變任何編碼,'\'工作!? – prongs

+0

是的,因爲'\ u0020'是代碼。實際上,這是native2ascii工具的作用:將ASCII範圍外的所有字符轉換爲此類Unicode轉義序列,以確保屬性文件在屬性代碼本身被視爲ASCII時被正確加載而不會破壞字符。 – user268396

+0

另外,我可以做到這一點,而無需更改屬性文件?我的意思是在java代碼中? – prongs

15

您可以逃脫與反彈空間:

s1 =\ computer 
+0

另外,我可以做到這一點,而無需更改屬性文件?我的意思是在java代碼中? – prongs