2014-04-10 27 views
2

我剛剛注意到,SharedPreferences在存儲字符串時刪除回車符(\ r)。由於我不知道這件事的代價很高,我想知道它是否會刪除任何其他字符。換句話說,它是否使用某個字符集。SharedPreferences是否使用某個字符集?

SharedPreferences sp = activity.getSharedPreferences("preferences", Context.MODE_PRIVATE); 
sp.edit().putString("Foo", "\r\nfoo").commit(); 

//After restarting the app 
SharedPreferences sp = activity.getSharedPreferences("preferences", Context.MODE_PRIVATE); 
String sFoo= sp.getString("Foo", ""); //returns "\nfoo", not "\r\nfoo" 

回答

1

換句話說,它使用特定的字符集。

When you write your SharedPreferences to the disk,它使用XmlUtils.writeMapXml,其輸出UTF-8

+0

謝謝你的情報。 UTF-8是否排除回車(\ r或0x0D)?爲什麼不是「\ r」映射到U + 0013? – Hong

+0

它與UTF-8(它支持所有的Unicode字符)以及與XML有關的所有內容(這些都會使空白字符崩潰)無關。 –

2

早上好,

它是更壞:如果要存儲字符串爲「\ r」到SharedPref,殺戮和重新啓動應用程序後,從SharedPref值會變成「\ n」。

從我們心愛的Android平臺,很討厭另一個bug ......

乾杯

+1

順便說一下,我說「早上好」,因爲SO過濾「嗨」和「你好」。這很奇怪! – bma350

相關問題