Fix string to locale conversion

The original implementation didn't care about leading underscores. StringTokenizer skips leading separators which is actually wrong. `new Locale("", "XX").toString()` produces `"_XX"` which can't be converted back to the same locale with the original implementation.