This is an update to Java Currency and Locale - Miscellaneous Notes.
Older versions of Java (using older versions of CLDR rules) used to support code like this:
This would parse the currency string to the number
In Java 17 and later (and possibly earlier), this behavior has changed. The standard space character (
U+0020) is no longer the expected separator between the number and the currency symbol. The non-breaking space (
U+00A0) is now the expected separator.
So, the following works:
I suppose we need to be careful that the only space in the string is the one between the amount and the currency symbol…