So you want to save some data and don't know which Encoding to use. My biggest suggestion is please do NOT use Encoding.Default.
Huh? That can't be right.
You heard me right, please don't use Encoding.Default. Encoding.Default sounds like the right thing to do (after all it does say "Default" right there in its name), and its pretty easy, and it even seems to work OK, but there are some pretty big gotchas with Encoding.Default.
So if you can't use Encoding.Default, what should you use? I'd recommend UTF-8 (Encoding.UTF8) or UTF-16 (Encoding.Unicode). Either of these support all of the characters that the framework can handle, so no more unexpected ?s. For English, UTF-8 is effectively as efficient as 1252, but UTF-8 supports unexpected characters that 1252 would drop. UTF-16 is a better choice for most scripts that require double byte encodings. For most scripts UTF-8 or UTF-16 have only slightly larger data sizes than the more restrictive "default" encoding. The extra confidence that the data is correctly encoded is almost always worth this small cost in data size. Even a web site on a dial up modem the size difference would be a negligible fraction of the total text and graphic sizes.