Locales: Use CLDR matching thousands separator

Message ID eb1814b5-cae3-8472-ece6-44bec12d570b@redhat.com
State New, archived
Headers

Commit Message

Marko Myllynen June 28, 2018, 11:09 a.m. UTC
  Hi,

As discussed in the earlier thread [1] it might make sense to use U+00A0
instead of U+202F in glibc locales as thousands separator to match the
current CLDR separator. If CLDR one day switches to U+202F we can revert
this patch to be in harmony with CLDR again. There is a CLDR ticket open
for discussion [2] where we can follow the status on the CLDR side.

1) https://sourceware.org/ml/libc-alpha/2018-06/msg00598.html
2) https://unicode.org/cldr/trac/ticket/11217


2018-06-28  Marko Myllynen  <myllynen@redhat.com>

	[BZ #23318]
	* localedata/locales/aa_DJ (LC_MONETARY): Use NBSP
	as thousands separator.
	* localedata/locales/az_AZ (LC_MONETARY): Likewise.
	* localedata/locales/be_BY (LC_MONETARY): Likewise.
	* localedata/locales/be_BY@latin (LC_MONETARY):
	Likewise.
	* localedata/locales/bg_BG (LC_MONETARY): Likewise.
	* localedata/locales/bs_BA (LC_MONETARY): Likewise.
	* localedata/locales/ce_RU (LC_MONETARY): Likewise.
	* localedata/locales/crh_UA (LC_MONETARY): Likewise.
	* localedata/locales/cs_CZ (LC_MONETARY): Likewise.
	* localedata/locales/cs_CZ (LC_NUMERIC): Likewise.
	* localedata/locales/cv_RU (LC_MONETARY): Likewise.
	* localedata/locales/de_AT (LC_MONETARY): Likewise.
	* localedata/locales/eo (LC_MONETARY): Likewise.
	* localedata/locales/es_CR (LC_MONETARY): Likewise.
	* localedata/locales/es_CR (LC_NUMERIC): Likewise.
	* localedata/locales/es_MX (LC_NUMERIC): Likewise.
	* localedata/locales/et_EE (LC_MONETARY): Likewise.
	* localedata/locales/et_EE (LC_NUMERIC): Likewise.
	* localedata/locales/fi_FI (LC_MONETARY): Likewise.
	* localedata/locales/fi_FI (LC_NUMERIC): Likewise.
	* localedata/locales/fr_CA (LC_MONETARY): Likewise.
	* localedata/locales/fr_FR (LC_MONETARY): Likewise.
	* localedata/locales/fr_FR (LC_NUMERIC): Likewise.
	* localedata/locales/fr_LU (LC_MONETARY): Likewise.
	* localedata/locales/fr_LU (LC_NUMERIC): Likewise.
	* localedata/locales/ht_HT (LC_MONETARY): Likewise.
	* localedata/locales/ht_HT (LC_NUMERIC): Likewise.
	* localedata/locales/kk_KZ (LC_MONETARY): Likewise.
	* localedata/locales/kk_KZ (LC_NUMERIC): Likewise.
	* localedata/locales/ky_KG (LC_MONETARY): Likewise.
	* localedata/locales/ky_KG (LC_NUMERIC): Likewise.
	* localedata/locales/lv_LV (LC_MONETARY): Likewise.
	* localedata/locales/lv_LV (LC_NUMERIC): Likewise.
	* localedata/locales/mfe_MU (LC_MONETARY): Likewise.
	* localedata/locales/mfe_MU (LC_NUMERIC): Likewise.
	* localedata/locales/mg_MG (LC_MONETARY): Likewise.
	* localedata/locales/mhr_RU (LC_MONETARY): Likewise.
	* localedata/locales/mk_MK (LC_MONETARY): Likewise.
	* localedata/locales/mk_MK (LC_NUMERIC): Likewise.
	* localedata/locales/mn_MN (LC_MONETARY): Likewise.
	* localedata/locales/nb_NO (LC_MONETARY): Likewise.
	* localedata/locales/nb_NO (LC_NUMERIC): Likewise.
	* localedata/locales/nl_AW (LC_MONETARY): Likewise.
	* localedata/locales/nl_NL (LC_MONETARY): Likewise.
	* localedata/locales/nn_NO (LC_MONETARY): Likewise.
	* localedata/locales/pap_AW (LC_MONETARY): Likewise.
	* localedata/locales/pap_CW (LC_MONETARY): Likewise.
	* localedata/locales/pl_PL (LC_MONETARY): Likewise.
	* localedata/locales/pl_PL (LC_NUMERIC): Likewise.
	* localedata/locales/ru_RU (LC_MONETARY): Likewise.
	* localedata/locales/ru_RU (LC_NUMERIC): Likewise.
	* localedata/locales/ru_UA (LC_MONETARY): Likewise.
	* localedata/locales/sk_SK (LC_MONETARY): Likewise.
	* localedata/locales/sk_SK (LC_NUMERIC): Likewise.
	* localedata/locales/sl_SI (LC_MONETARY): Likewise.
	* localedata/locales/sl_SI (LC_NUMERIC): Likewise.
	* localedata/locales/sq_MK (LC_MONETARY): Likewise.
	* localedata/locales/sv_SE (LC_MONETARY): Likewise.
	* localedata/locales/sv_SE (LC_NUMERIC): Likewise.
	* localedata/locales/tg_TJ (LC_MONETARY): Likewise.
	* localedata/locales/tt_RU (LC_MONETARY): Likewise.
	* localedata/locales/tt_RU@iqtelif (LC_MONETARY):
	Likewise.
	* localedata/locales/uk_UA (LC_MONETARY): Likewise.
	* localedata/locales/uk_UA (LC_NUMERIC): Likewise.
	* localedata/locales/unm_US (LC_MONETARY): Likewise.
	* localedata/locales/unm_US (LC_NUMERIC): Likewise.
	* localedata/locales/wo_SN (LC_MONETARY): Likewise.
	* stdlib/tst-strfmon_l.c: Likewise.
	* stdlib/tst-strtod4.c: Likewise.
	* stdlib/tst-strtod5i.c: Likewise.



Thanks,
  

Comments

Marko Myllynen Aug. 16, 2018, 9:28 a.m. UTC | #1
Ping?

There were no comments about this, how shall we proceed?

Carlos commented in the CLDR ticket last week
(https://unicode.org/cldr/trac/ticket/11217) but otherwise there has
been no activity around it, for example it has no target milestone set
so it seems clear that the possible change on the CLDR side will not be
imminent. So to harmonize with CLDR now glibc would need to apply this
patch. But of course going back and forth on the glibc side is not ideal
if CLDR does the change some time in the future. But currently it is
unclear when, if ever, that might happen, it could be several releases
(years) from now.

Perhaps do nothing for now, and prior next release try to conclude from
the CLDR ticket whether it then seems warranted to apply this patch or not?

Thanks,

On 2018-06-28 14:09, Marko Myllynen wrote:
> Hi,
> 
> As discussed in the earlier thread [1] it might make sense to use U+00A0
> instead of U+202F in glibc locales as thousands separator to match the
> current CLDR separator. If CLDR one day switches to U+202F we can revert
> this patch to be in harmony with CLDR again. There is a CLDR ticket open
> for discussion [2] where we can follow the status on the CLDR side.
> 
> 1) https://sourceware.org/ml/libc-alpha/2018-06/msg00598.html
> 2) https://unicode.org/cldr/trac/ticket/11217
> 
> 
> 2018-06-28  Marko Myllynen  <myllynen@redhat.com>
> 
> 	[BZ #23318]
> 	* localedata/locales/aa_DJ (LC_MONETARY): Use NBSP
> 	as thousands separator.
> 	* localedata/locales/az_AZ (LC_MONETARY): Likewise.
> 	* localedata/locales/be_BY (LC_MONETARY): Likewise.
> 	* localedata/locales/be_BY@latin (LC_MONETARY):
> 	Likewise.
> 	* localedata/locales/bg_BG (LC_MONETARY): Likewise.
> 	* localedata/locales/bs_BA (LC_MONETARY): Likewise.
> 	* localedata/locales/ce_RU (LC_MONETARY): Likewise.
> 	* localedata/locales/crh_UA (LC_MONETARY): Likewise.
> 	* localedata/locales/cs_CZ (LC_MONETARY): Likewise.
> 	* localedata/locales/cs_CZ (LC_NUMERIC): Likewise.
> 	* localedata/locales/cv_RU (LC_MONETARY): Likewise.
> 	* localedata/locales/de_AT (LC_MONETARY): Likewise.
> 	* localedata/locales/eo (LC_MONETARY): Likewise.
> 	* localedata/locales/es_CR (LC_MONETARY): Likewise.
> 	* localedata/locales/es_CR (LC_NUMERIC): Likewise.
> 	* localedata/locales/es_MX (LC_NUMERIC): Likewise.
> 	* localedata/locales/et_EE (LC_MONETARY): Likewise.
> 	* localedata/locales/et_EE (LC_NUMERIC): Likewise.
> 	* localedata/locales/fi_FI (LC_MONETARY): Likewise.
> 	* localedata/locales/fi_FI (LC_NUMERIC): Likewise.
> 	* localedata/locales/fr_CA (LC_MONETARY): Likewise.
> 	* localedata/locales/fr_FR (LC_MONETARY): Likewise.
> 	* localedata/locales/fr_FR (LC_NUMERIC): Likewise.
> 	* localedata/locales/fr_LU (LC_MONETARY): Likewise.
> 	* localedata/locales/fr_LU (LC_NUMERIC): Likewise.
> 	* localedata/locales/ht_HT (LC_MONETARY): Likewise.
> 	* localedata/locales/ht_HT (LC_NUMERIC): Likewise.
> 	* localedata/locales/kk_KZ (LC_MONETARY): Likewise.
> 	* localedata/locales/kk_KZ (LC_NUMERIC): Likewise.
> 	* localedata/locales/ky_KG (LC_MONETARY): Likewise.
> 	* localedata/locales/ky_KG (LC_NUMERIC): Likewise.
> 	* localedata/locales/lv_LV (LC_MONETARY): Likewise.
> 	* localedata/locales/lv_LV (LC_NUMERIC): Likewise.
> 	* localedata/locales/mfe_MU (LC_MONETARY): Likewise.
> 	* localedata/locales/mfe_MU (LC_NUMERIC): Likewise.
> 	* localedata/locales/mg_MG (LC_MONETARY): Likewise.
> 	* localedata/locales/mhr_RU (LC_MONETARY): Likewise.
> 	* localedata/locales/mk_MK (LC_MONETARY): Likewise.
> 	* localedata/locales/mk_MK (LC_NUMERIC): Likewise.
> 	* localedata/locales/mn_MN (LC_MONETARY): Likewise.
> 	* localedata/locales/nb_NO (LC_MONETARY): Likewise.
> 	* localedata/locales/nb_NO (LC_NUMERIC): Likewise.
> 	* localedata/locales/nl_AW (LC_MONETARY): Likewise.
> 	* localedata/locales/nl_NL (LC_MONETARY): Likewise.
> 	* localedata/locales/nn_NO (LC_MONETARY): Likewise.
> 	* localedata/locales/pap_AW (LC_MONETARY): Likewise.
> 	* localedata/locales/pap_CW (LC_MONETARY): Likewise.
> 	* localedata/locales/pl_PL (LC_MONETARY): Likewise.
> 	* localedata/locales/pl_PL (LC_NUMERIC): Likewise.
> 	* localedata/locales/ru_RU (LC_MONETARY): Likewise.
> 	* localedata/locales/ru_RU (LC_NUMERIC): Likewise.
> 	* localedata/locales/ru_UA (LC_MONETARY): Likewise.
> 	* localedata/locales/sk_SK (LC_MONETARY): Likewise.
> 	* localedata/locales/sk_SK (LC_NUMERIC): Likewise.
> 	* localedata/locales/sl_SI (LC_MONETARY): Likewise.
> 	* localedata/locales/sl_SI (LC_NUMERIC): Likewise.
> 	* localedata/locales/sq_MK (LC_MONETARY): Likewise.
> 	* localedata/locales/sv_SE (LC_MONETARY): Likewise.
> 	* localedata/locales/sv_SE (LC_NUMERIC): Likewise.
> 	* localedata/locales/tg_TJ (LC_MONETARY): Likewise.
> 	* localedata/locales/tt_RU (LC_MONETARY): Likewise.
> 	* localedata/locales/tt_RU@iqtelif (LC_MONETARY):
> 	Likewise.
> 	* localedata/locales/uk_UA (LC_MONETARY): Likewise.
> 	* localedata/locales/uk_UA (LC_NUMERIC): Likewise.
> 	* localedata/locales/unm_US (LC_MONETARY): Likewise.
> 	* localedata/locales/unm_US (LC_NUMERIC): Likewise.
> 	* localedata/locales/wo_SN (LC_MONETARY): Likewise.
> 	* stdlib/tst-strfmon_l.c: Likewise.
> 	* stdlib/tst-strtod4.c: Likewise.
> 	* stdlib/tst-strtod5i.c: Likewise.
> 
> 
> diff --git a/localedata/locales/aa_DJ b/localedata/locales/aa_DJ
> index fcb9af8..4c0bdd8 100644
> --- a/localedata/locales/aa_DJ
> +++ b/localedata/locales/aa_DJ
> @@ -88,7 +88,7 @@ LC_MONETARY
>  int_curr_symbol       "DJF "
>  currency_symbol       "Fdj"
>  mon_decimal_point     "."
> -mon_thousands_sep     "<U202F>"
> +mon_thousands_sep     "<U00A0>"
>  mon_grouping          3;3
>  positive_sign         ""
>  negative_sign         "-"
> diff --git a/localedata/locales/az_AZ b/localedata/locales/az_AZ
> index 6fe8839..450db3f 100644
> --- a/localedata/locales/az_AZ
> +++ b/localedata/locales/az_AZ
> @@ -158,7 +158,7 @@ LC_MONETARY
>  int_curr_symbol           "AZN "
>  currency_symbol           "<U20BC>"
>  mon_decimal_point         "."
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/be_BY b/localedata/locales/be_BY
> index 324379b..1314f59 100644
> --- a/localedata/locales/be_BY
> +++ b/localedata/locales/be_BY
> @@ -105,7 +105,7 @@ LC_MONETARY
>  int_curr_symbol           "BYR "
>  currency_symbol           "<U0440><U0443><U0431>"
>  mon_decimal_point         "."
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/be_BY@latin b/localedata/locales/be_BY@latin
> index 43b13cc..e5b0fd8 100644
> --- a/localedata/locales/be_BY@latin
> +++ b/localedata/locales/be_BY@latin
> @@ -126,7 +126,7 @@ LC_MONETARY
>  int_curr_symbol           "BYR "
>  currency_symbol           "Rub"
>  mon_decimal_point         "."
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/bg_BG b/localedata/locales/bg_BG
> index 7a9cfa0..cc954fd 100644
> --- a/localedata/locales/bg_BG
> +++ b/localedata/locales/bg_BG
> @@ -251,7 +251,7 @@ LC_MONETARY
>  int_curr_symbol           "BGN "
>  currency_symbol           "<U043B><U0432>."
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/bs_BA b/localedata/locales/bs_BA
> index 3b18056..ca1f54a 100644
> --- a/localedata/locales/bs_BA
> +++ b/localedata/locales/bs_BA
> @@ -75,7 +75,7 @@ LC_MONETARY
>  int_curr_symbol           "BAM "
>  currency_symbol           "KM"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/ce_RU b/localedata/locales/ce_RU
> index 03e60f8..49d0123 100644
> --- a/localedata/locales/ce_RU
> +++ b/localedata/locales/ce_RU
> @@ -106,7 +106,7 @@ LC_MONETARY
>  int_curr_symbol    "RUB "
>  currency_symbol    "<U20BD>"
>  mon_decimal_point  "."
> -mon_thousands_sep  "<U202F>"
> +mon_thousands_sep  "<U00A0>"
>  mon_grouping       3;3
>  positive_sign      ""
>  negative_sign      "-"
> diff --git a/localedata/locales/crh_UA b/localedata/locales/crh_UA
> index b2ac8c6..ca94e8c 100644
> --- a/localedata/locales/crh_UA
> +++ b/localedata/locales/crh_UA
> @@ -116,7 +116,7 @@ LC_MONETARY
>  int_curr_symbol           "UAH "
>  currency_symbol           "<U20B4>"
>  mon_decimal_point         "."
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/cs_CZ b/localedata/locales/cs_CZ
> index 41fbd2b..2db44e2 100644
> --- a/localedata/locales/cs_CZ
> +++ b/localedata/locales/cs_CZ
> @@ -237,7 +237,7 @@ LC_MONETARY
>  int_curr_symbol		"CZK "
>  currency_symbol		"K<U010D>"
>  mon_decimal_point	","
> -mon_thousands_sep	"<U202F>"
> +mon_thousands_sep	"<U00A0>"
>  mon_grouping      	3;3
>  positive_sign		""
>  negative_sign		"-"
> @@ -258,7 +258,7 @@ END LC_MONETARY
>  LC_NUMERIC
>  
>  decimal_point		","
> -thousands_sep		"<U202F>"
> +thousands_sep		"<U00A0>"
>  grouping		3;3
>  
>  END LC_NUMERIC
> diff --git a/localedata/locales/cv_RU b/localedata/locales/cv_RU
> index e9247b3..57d5646 100644
> --- a/localedata/locales/cv_RU
> +++ b/localedata/locales/cv_RU
> @@ -118,7 +118,7 @@ int_curr_symbol           "RUB "
>  currency_symbol "<U20BD>"
>  
>  mon_decimal_point         "."
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/de_AT b/localedata/locales/de_AT
> index b8cbbe1..1e411d6 100644
> --- a/localedata/locales/de_AT
> +++ b/localedata/locales/de_AT
> @@ -65,7 +65,7 @@ LC_MONETARY
>  int_curr_symbol           "EUR "
>  currency_symbol           "<U20AC>"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/eo b/localedata/locales/eo
> index 33a8103..37296a1 100644
> --- a/localedata/locales/eo
> +++ b/localedata/locales/eo
> @@ -119,7 +119,7 @@ LC_MONETARY
>  int_curr_symbol     "XDR "
>  currency_symbol     "<U00A4>"
>  mon_decimal_point   ","
> -mon_thousands_sep   "<U202F>"
> +mon_thousands_sep   "<U00A0>"
>  mon_grouping        3;3
>  positive_sign       ""
>  negative_sign       "-"
> diff --git a/localedata/locales/es_CR b/localedata/locales/es_CR
> index f76a096..617d8d8 100644
> --- a/localedata/locales/es_CR
> +++ b/localedata/locales/es_CR
> @@ -59,7 +59,7 @@ int_curr_symbol      "CRC "
>  currency_symbol      "<U20A1>"
>  % Decreto Ejecutivo 29660
>  mon_decimal_point    ","
> -mon_thousands_sep    "<U202F>"
> +mon_thousands_sep    "<U00A0>"
>  mon_grouping         3;3
>  positive_sign        ""
>  negative_sign        "-"
> @@ -76,7 +76,7 @@ END LC_MONETARY
>  LC_NUMERIC
>  % Decreto Ejecutivo 29660
>  decimal_point        ","
> -thousands_sep        "<U202F>"
> +thousands_sep        "<U00A0>"
>  grouping             3;3
>  END LC_NUMERIC
>  
> diff --git a/localedata/locales/es_MX b/localedata/locales/es_MX
> index 75cc000..6fad202 100644
> --- a/localedata/locales/es_MX
> +++ b/localedata/locales/es_MX
> @@ -82,7 +82,7 @@ END LC_MONETARY
>  
>  LC_NUMERIC
>  decimal_point        "."
> -thousands_sep        "<U202F>"
> +thousands_sep        "<U00A0>"
>  grouping             3;3
>  END LC_NUMERIC
>  
> diff --git a/localedata/locales/et_EE b/localedata/locales/et_EE
> index f5c4714..06f0e4c 100644
> --- a/localedata/locales/et_EE
> +++ b/localedata/locales/et_EE
> @@ -120,7 +120,7 @@ LC_MONETARY
>  int_curr_symbol     "EUR "
>  currency_symbol     "<U20AC>"
>  mon_decimal_point   ","
> -mon_thousands_sep   "<U202F>"
> +mon_thousands_sep   "<U00A0>"
>  mon_grouping        3;3
>  positive_sign       ""
>  negative_sign       "-"
> @@ -136,7 +136,7 @@ END LC_MONETARY
>  
>  LC_NUMERIC
>  decimal_point           ","
> -thousands_sep           "<U202F>"
> +thousands_sep           "<U00A0>"
>  grouping                3;3
>  END LC_NUMERIC
>  
> diff --git a/localedata/locales/fi_FI b/localedata/locales/fi_FI
> index eeb2783..87fa9c1 100644
> --- a/localedata/locales/fi_FI
> +++ b/localedata/locales/fi_FI
> @@ -184,7 +184,7 @@ LC_MONETARY
>  int_curr_symbol      "EUR "
>  currency_symbol      "<U20AC>"
>  mon_decimal_point    ","
> -mon_thousands_sep    "<U202F>"
> +mon_thousands_sep    "<U00A0>"
>  mon_grouping         3;3
>  positive_sign        ""
>  negative_sign        "-"
> @@ -200,7 +200,7 @@ END LC_MONETARY
>  
>  LC_NUMERIC
>  decimal_point        ","
> -thousands_sep        "<U202F>"
> +thousands_sep        "<U00A0>"
>  grouping             3;3
>  END LC_NUMERIC
>  
> diff --git a/localedata/locales/fr_CA b/localedata/locales/fr_CA
> index e37d042..9892db5 100644
> --- a/localedata/locales/fr_CA
> +++ b/localedata/locales/fr_CA
> @@ -67,7 +67,7 @@ LC_MONETARY
>  int_curr_symbol           "CAD "
>  currency_symbol           "$"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/fr_FR b/localedata/locales/fr_FR
> index a18c514..8e0c802 100644
> --- a/localedata/locales/fr_FR
> +++ b/localedata/locales/fr_FR
> @@ -78,7 +78,7 @@ LC_MONETARY
>  int_curr_symbol           "EUR "
>  currency_symbol           "<U20AC>"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3
>  positive_sign             ""
>  negative_sign             "-"
> @@ -94,7 +94,7 @@ END LC_MONETARY
>  
>  LC_NUMERIC
>  decimal_point             ","
> -thousands_sep             "<U202F>"
> +thousands_sep             "<U00A0>"
>  grouping                  3
>  END LC_NUMERIC
>  
> diff --git a/localedata/locales/fr_LU b/localedata/locales/fr_LU
> index d9eb43e..5441bb7 100644
> --- a/localedata/locales/fr_LU
> +++ b/localedata/locales/fr_LU
> @@ -68,7 +68,7 @@ LC_MONETARY
>  int_curr_symbol           "EUR "
>  currency_symbol           "<U20AC>"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> @@ -84,7 +84,7 @@ END LC_MONETARY
>  
>  LC_NUMERIC
>  decimal_point             ","
> -thousands_sep             "<U202F>"
> +thousands_sep             "<U00A0>"
>  grouping                  3;3
>  END LC_NUMERIC
>  
> diff --git a/localedata/locales/ht_HT b/localedata/locales/ht_HT
> index 0e0a79d..6dd2890 100644
> --- a/localedata/locales/ht_HT
> +++ b/localedata/locales/ht_HT
> @@ -118,7 +118,7 @@ END LC_TIME
>  
>  LC_NUMERIC
>  decimal_point ","
> -thousands_sep "<U202F>"
> +thousands_sep "<U00A0>"
>  grouping      3
>  END LC_NUMERIC
>  
> @@ -126,7 +126,7 @@ LC_MONETARY
>  int_curr_symbol           "HTG "
>  currency_symbol           "g"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/kk_KZ b/localedata/locales/kk_KZ
> index c29c84b..c29f5c2 100644
> --- a/localedata/locales/kk_KZ
> +++ b/localedata/locales/kk_KZ
> @@ -113,7 +113,7 @@ LC_MONETARY
>  int_curr_symbol           "KZT "
>  currency_symbol           "<U20B8>"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> @@ -135,7 +135,7 @@ END LC_MONETARY
>  
>  LC_NUMERIC
>  decimal_point             ","
> -thousands_sep             "<U202F>"
> +thousands_sep             "<U00A0>"
>  grouping                  3;3
>  END LC_NUMERIC
>  
> diff --git a/localedata/locales/ky_KG b/localedata/locales/ky_KG
> index 871b8a8..5c146fb 100644
> --- a/localedata/locales/ky_KG
> +++ b/localedata/locales/ky_KG
> @@ -97,7 +97,7 @@ LC_MONETARY
>  int_curr_symbol           "KGS "
>  currency_symbol           "<U0441><U043E><U043C>"
>  mon_decimal_point         "."
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> @@ -113,7 +113,7 @@ END LC_MONETARY
>  
>  LC_NUMERIC
>  decimal_point             ","
> -thousands_sep             "<U202F>"
> +thousands_sep             "<U00A0>"
>  grouping                  3;3
>  END LC_NUMERIC
>  
> diff --git a/localedata/locales/lv_LV b/localedata/locales/lv_LV
> index a20cbdd..20ebe6c 100644
> --- a/localedata/locales/lv_LV
> +++ b/localedata/locales/lv_LV
> @@ -132,7 +132,7 @@ LC_MONETARY
>  int_curr_symbol   "EUR "
>  currency_symbol   "<U20AC>"
>  mon_decimal_point ","
> -mon_thousands_sep "<U202F>"
> +mon_thousands_sep "<U00A0>"
>  mon_grouping      3;3
>  positive_sign     ""
>  negative_sign     "-"
> @@ -148,7 +148,7 @@ END LC_MONETARY
>  
>  LC_NUMERIC
>  decimal_point     ","
> -thousands_sep     "<U202F>"
> +thousands_sep     "<U00A0>"
>  grouping          3;3
>  END LC_NUMERIC
>  
> diff --git a/localedata/locales/mfe_MU b/localedata/locales/mfe_MU
> index 7415e92..1ff9aaf 100644
> --- a/localedata/locales/mfe_MU
> +++ b/localedata/locales/mfe_MU
> @@ -118,7 +118,7 @@ LC_MONETARY
>  int_curr_symbol     "MUR "
>  currency_symbol     "<U20A8>"
>  mon_decimal_point   "."
> -mon_thousands_sep   "<U202F>"
> +mon_thousands_sep   "<U00A0>"
>  mon_grouping        3;3
>  positive_sign       ""
>  negative_sign       "-"
> @@ -137,7 +137,7 @@ END LC_MONETARY
>  
>  LC_NUMERIC
>  decimal_point          "."
> -thousands_sep          "<U202F>"
> +thousands_sep          "<U00A0>"
>  grouping               3
>  END LC_NUMERIC
>  
> diff --git a/localedata/locales/mg_MG b/localedata/locales/mg_MG
> index 266ff17..46e80d7 100644
> --- a/localedata/locales/mg_MG
> +++ b/localedata/locales/mg_MG
> @@ -74,7 +74,7 @@ LC_MONETARY
>  int_curr_symbol           "MGA "
>  currency_symbol           "Ar"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/mhr_RU b/localedata/locales/mhr_RU
> index 85ac21b..03eeb84 100644
> --- a/localedata/locales/mhr_RU
> +++ b/localedata/locales/mhr_RU
> @@ -70,7 +70,7 @@ LC_MONETARY
>  int_curr_symbol           "RUB "
>  currency_symbol           "<U20BD>"
>  mon_decimal_point         "."
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/mk_MK b/localedata/locales/mk_MK
> index 87bae1d..3b8dd76 100644
> --- a/localedata/locales/mk_MK
> +++ b/localedata/locales/mk_MK
> @@ -95,7 +95,7 @@ LC_MONETARY
>  int_curr_symbol           "MKD "
>  currency_symbol           "<U0434><U0435><U043D>"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> @@ -111,7 +111,7 @@ END LC_MONETARY
>  
>  LC_NUMERIC
>  decimal_point             ","
> -thousands_sep             "<U202F>"
> +thousands_sep             "<U00A0>"
>  grouping                  3;3
>  END LC_NUMERIC
>  
> diff --git a/localedata/locales/mn_MN b/localedata/locales/mn_MN
> index fbcf04f..0a2ce6f 100644
> --- a/localedata/locales/mn_MN
> +++ b/localedata/locales/mn_MN
> @@ -137,7 +137,7 @@ LC_MONETARY
>  int_curr_symbol     "MNT "
>  currency_symbol     "<U20AE>"
>  mon_decimal_point   "."
> -mon_thousands_sep   "<U202F>"
> +mon_thousands_sep   "<U00A0>"
>  mon_grouping        3;3
>  positive_sign       ""
>  negative_sign       "-"
> diff --git a/localedata/locales/nb_NO b/localedata/locales/nb_NO
> index a8675b6..efc0ec8 100644
> --- a/localedata/locales/nb_NO
> +++ b/localedata/locales/nb_NO
> @@ -173,7 +173,7 @@ LC_MONETARY
>  int_curr_symbol         "NOK "
>  currency_symbol         "kr"
>  mon_decimal_point       ","
> -mon_thousands_sep       "<U202F>"
> +mon_thousands_sep       "<U00A0>"
>  mon_grouping            3;3
>  positive_sign           ""
>  negative_sign           "-"
> @@ -189,7 +189,7 @@ END LC_MONETARY
>  
>  LC_NUMERIC
>  decimal_point           ","
> -thousands_sep           "<U202F>"
> +thousands_sep           "<U00A0>"
>  grouping                3;3
>  END LC_NUMERIC
>  
> diff --git a/localedata/locales/nl_AW b/localedata/locales/nl_AW
> index 57e8e69..e131975 100644
> --- a/localedata/locales/nl_AW
> +++ b/localedata/locales/nl_AW
> @@ -50,7 +50,7 @@ LC_MONETARY
>  int_curr_symbol     "AWG "
>  currency_symbol     "Afl."
>  mon_decimal_point   ","
> -mon_thousands_sep   "<U202F>"
> +mon_thousands_sep   "<U00A0>"
>  mon_grouping        3;3
>  positive_sign       ""
>  negative_sign       "-"
> diff --git a/localedata/locales/nl_NL b/localedata/locales/nl_NL
> index 1ab3277..c30b170 100644
> --- a/localedata/locales/nl_NL
> +++ b/localedata/locales/nl_NL
> @@ -74,7 +74,7 @@ LC_MONETARY
>  int_curr_symbol           "EUR "
>  currency_symbol           "<U20AC>"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/nn_NO b/localedata/locales/nn_NO
> index c8da4ce..97efcb9 100644
> --- a/localedata/locales/nn_NO
> +++ b/localedata/locales/nn_NO
> @@ -56,7 +56,7 @@ LC_MONETARY
>  int_curr_symbol       "NOK "
>  currency_symbol       "kr"
>  mon_decimal_point     ","
> -mon_thousands_sep     "<U202F>"
> +mon_thousands_sep     "<U00A0>"
>  mon_grouping          3
>  positive_sign         ""
>  negative_sign         "-"
> diff --git a/localedata/locales/pap_AW b/localedata/locales/pap_AW
> index 7c4aebc..49645fa 100644
> --- a/localedata/locales/pap_AW
> +++ b/localedata/locales/pap_AW
> @@ -77,7 +77,7 @@ LC_MONETARY
>  int_curr_symbol           "AWG "
>  currency_symbol           "<U0192>"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/pap_CW b/localedata/locales/pap_CW
> index 725ff59..92ad271 100644
> --- a/localedata/locales/pap_CW
> +++ b/localedata/locales/pap_CW
> @@ -77,7 +77,7 @@ LC_MONETARY
>  int_curr_symbol           "ANG "
>  currency_symbol           "<U0192>"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/pl_PL b/localedata/locales/pl_PL
> index 4c1b2a8..e6ec0c4 100644
> --- a/localedata/locales/pl_PL
> +++ b/localedata/locales/pl_PL
> @@ -144,7 +144,7 @@ LC_MONETARY
>  int_curr_symbol           "PLN "
>  currency_symbol           "z<U0142>"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3
>  positive_sign             ""
>  negative_sign             "-"
> @@ -160,7 +160,7 @@ END LC_MONETARY
>  
>  LC_NUMERIC
>  decimal_point             ","
> -thousands_sep             "<U202F>"
> +thousands_sep             "<U00A0>"
>  grouping                  3
>  END LC_NUMERIC
>  
> diff --git a/localedata/locales/ru_RU b/localedata/locales/ru_RU
> index fdb2059..4444a74 100644
> --- a/localedata/locales/ru_RU
> +++ b/localedata/locales/ru_RU
> @@ -83,7 +83,7 @@ LC_MONETARY
>  int_curr_symbol           "RUB "
>  currency_symbol           "<U20BD>"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> @@ -99,7 +99,7 @@ END LC_MONETARY
>  
>  LC_NUMERIC
>  decimal_point             ","
> -thousands_sep             "<U202F>"
> +thousands_sep             "<U00A0>"
>  grouping                  3;3
>  END LC_NUMERIC
>  
> diff --git a/localedata/locales/ru_UA b/localedata/locales/ru_UA
> index 381370c..0222bbd 100644
> --- a/localedata/locales/ru_UA
> +++ b/localedata/locales/ru_UA
> @@ -62,7 +62,7 @@ LC_MONETARY
>  int_curr_symbol           "UAH "
>  currency_symbol           "<U20B4>"
>  mon_decimal_point         "."
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/sk_SK b/localedata/locales/sk_SK
> index 94e6e12..f3e0775 100644
> --- a/localedata/locales/sk_SK
> +++ b/localedata/locales/sk_SK
> @@ -91,7 +91,7 @@ LC_MONETARY
>  int_curr_symbol		"EUR "
>  currency_symbol		"<U20AC>"
>  mon_decimal_point	","
> -mon_thousands_sep	"<U202F>"
> +mon_thousands_sep	"<U00A0>"
>  mon_grouping      	3;3
>  positive_sign		""
>  negative_sign		"-"
> @@ -112,7 +112,7 @@ END LC_MONETARY
>  LC_NUMERIC
>  
>  decimal_point		","
> -thousands_sep		"<U202F>"
> +thousands_sep		"<U00A0>"
>  grouping		3;3
>  
>  END LC_NUMERIC
> diff --git a/localedata/locales/sl_SI b/localedata/locales/sl_SI
> index 6157b26..545e059 100644
> --- a/localedata/locales/sl_SI
> +++ b/localedata/locales/sl_SI
> @@ -2134,7 +2134,7 @@ LC_MONETARY
>  int_curr_symbol           "EUR "
>  currency_symbol           "<U20AC>"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> @@ -2150,7 +2150,7 @@ END LC_MONETARY
>  
>  LC_NUMERIC
>  decimal_point             ","
> -thousands_sep             "<U202F>"
> +thousands_sep             "<U00A0>"
>  grouping                  0;0
>  END LC_NUMERIC
>  
> diff --git a/localedata/locales/sq_MK b/localedata/locales/sq_MK
> index c2325f3..ad34895 100644
> --- a/localedata/locales/sq_MK
> +++ b/localedata/locales/sq_MK
> @@ -54,7 +54,7 @@ LC_MONETARY
>  int_curr_symbol           "MKD "
>  currency_symbol           "den"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/sv_SE b/localedata/locales/sv_SE
> index aa28c23..8f37fd7 100644
> --- a/localedata/locales/sv_SE
> +++ b/localedata/locales/sv_SE
> @@ -180,7 +180,7 @@ LC_MONETARY
>  int_curr_symbol         "SEK "
>  currency_symbol         "kr"
>  mon_decimal_point       ","
> -mon_thousands_sep       "<U202F>"
> +mon_thousands_sep       "<U00A0>"
>  mon_grouping            3;3
>  positive_sign           ""
>  negative_sign           "-"
> @@ -196,7 +196,7 @@ END LC_MONETARY
>  
>  LC_NUMERIC
>  decimal_point           ","
> -thousands_sep           "<U202F>"
> +thousands_sep           "<U00A0>"
>  grouping                3;3
>  END LC_NUMERIC
>  
> diff --git a/localedata/locales/tg_TJ b/localedata/locales/tg_TJ
> index 35dfca4..9dc2231 100644
> --- a/localedata/locales/tg_TJ
> +++ b/localedata/locales/tg_TJ
> @@ -132,7 +132,7 @@ LC_MONETARY
>  int_curr_symbol           "TJS "
>  currency_symbol           "<U0440><U0443><U0431>"
>  mon_decimal_point         "."
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/tt_RU b/localedata/locales/tt_RU
> index b3b79b2..84d2796 100644
> --- a/localedata/locales/tt_RU
> +++ b/localedata/locales/tt_RU
> @@ -173,7 +173,7 @@ LC_MONETARY
>  int_curr_symbol           "RUB "
>  currency_symbol           "<U20BD>"
>  mon_decimal_point         "."
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/tt_RU@iqtelif b/localedata/locales/tt_RU@iqtelif
> index d4737c8..cfd0b80 100644
> --- a/localedata/locales/tt_RU@iqtelif
> +++ b/localedata/locales/tt_RU@iqtelif
> @@ -76,7 +76,7 @@ LC_MONETARY
>  int_curr_symbol           "RUB "
>  currency_symbol           "<U20BD>"
>  mon_decimal_point         "."
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/localedata/locales/uk_UA b/localedata/locales/uk_UA
> index b8818bf..ab18b45 100644
> --- a/localedata/locales/uk_UA
> +++ b/localedata/locales/uk_UA
> @@ -611,7 +611,7 @@ mon_decimal_point         ","
>  % This string is used as a thousands separator when formatting monetary
>  % quantities.
>  % see LC_NUMERIC:thousands separator
> -mon_thousands_sep         "<U202F>" % <NNBSP> (0X202F)
> +mon_thousands_sep         "<U00A0>" % <NBSP> (0X00A0)
>  
>  % Define  the  size of each group of digits in formatted monetary
>  % quantities.  The operand is a sequence of integers separated by
> @@ -741,7 +741,7 @@ decimal_point             "," % see LC_MONETARY:mon_decimal_pint
>  % The string that will be used as a group separator when formatting
>  % numeric quantities.
>  % see LC_MONETARY:mon_thousands_sep
> -thousands_sep             "<U202F>" % <NNBSP> (0X202F)
> +thousands_sep             "<U00A0>" % <NBSP> (0X00A0)
>  
>  % A string that describes the formatting of numeric quantities.
>  %
> diff --git a/localedata/locales/unm_US b/localedata/locales/unm_US
> index 1e62c60..0590360 100644
> --- a/localedata/locales/unm_US
> +++ b/localedata/locales/unm_US
> @@ -95,7 +95,7 @@ END LC_TIME
>  
>  LC_NUMERIC
>  decimal_point           "."
> -thousands_sep           "<U202F>"
> +thousands_sep           "<U00A0>"
>  grouping                2;2;2;3
>  END LC_NUMERIC
>  
> @@ -103,7 +103,7 @@ LC_MONETARY
>  int_curr_symbol         "USD "
>  currency_symbol         "$"
>  mon_decimal_point       "."
> -mon_thousands_sep       "<U202F>"
> +mon_thousands_sep       "<U00A0>"
>  mon_grouping            3
>  positive_sign           ""
>  negative_sign           "-"
> diff --git a/localedata/locales/wo_SN b/localedata/locales/wo_SN
> index 47263d2..4911d85 100644
> --- a/localedata/locales/wo_SN
> +++ b/localedata/locales/wo_SN
> @@ -74,7 +74,7 @@ LC_MONETARY
>  int_curr_symbol           "XOF "
>  currency_symbol           "CFA"
>  mon_decimal_point         ","
> -mon_thousands_sep         "<U202F>"
> +mon_thousands_sep         "<U00A0>"
>  mon_grouping              3;3
>  positive_sign             ""
>  negative_sign             "-"
> diff --git a/stdlib/tst-strfmon_l.c b/stdlib/tst-strfmon_l.c
> index 1994d62..ed7b08e 100644
> --- a/stdlib/tst-strfmon_l.c
> +++ b/stdlib/tst-strfmon_l.c
> @@ -150,11 +150,11 @@ static const struct locale_pair tests[] =
>        "tg_TJ.UTF-8",
>        {
>          {
> -          "1\u202f234\u202f567.89 TJS", "1\u202f234\u202f567.89 \u0440\u0443\u0431",
> +          "1\u00a0234\u00a0567.89 TJS", "1\u00a0234\u00a0567.89 \u0440\u0443\u0431",
>            "1234567.89 TJS", "1234567.89 \u0440\u0443\u0431"
>          },
>          {
> -          "-1\u202f234\u202f567.89 TJS", "-1\u202f234\u202f567.89 \u0440\u0443\u0431",
> +          "-1\u00a0234\u00a0567.89 TJS", "-1\u00a0234\u00a0567.89 \u0440\u0443\u0431",
>            "-1234567.89 TJS", "-1234567.89 \u0440\u0443\u0431"
>          }
>        }
> diff --git a/stdlib/tst-strtod4.c b/stdlib/tst-strtod4.c
> index aae9835..2d9d54c 100644
> --- a/stdlib/tst-strtod4.c
> +++ b/stdlib/tst-strtod4.c
> @@ -3,7 +3,7 @@
>  #include <stdlib.h>
>  #include <string.h>
>  
> -#define NNBSP "\xe2\x80\xaf"
> +#define NBSP "\xc2\xa0"
>  
>  static const struct
>  {
> @@ -12,8 +12,8 @@ static const struct
>    double expected;
>  } tests[] =
>    {
> -    { "000"NNBSP"000"NNBSP"000", "", 0.0 },
> -    { "1"NNBSP"000"NNBSP"000,5x", "x", 1000000.5 }
> +    { "000"NBSP"000"NBSP"000", "", 0.0 },
> +    { "1"NBSP"000"NBSP"000,5x", "x", 1000000.5 }
>    };
>  #define NTESTS (sizeof (tests) / sizeof (tests[0]))
>  
> diff --git a/stdlib/tst-strtod5i.c b/stdlib/tst-strtod5i.c
> index ee72dc1..1d3fe1a 100644
> --- a/stdlib/tst-strtod5i.c
> +++ b/stdlib/tst-strtod5i.c
> @@ -22,7 +22,7 @@
>  #include <string.h>
>  #include <math.h>
>  
> -#define NNBSP "\xe2\x80\xaf"
> +#define NBSP "\xc2\xa0"
>  
>  static const struct
>  {
> @@ -57,8 +57,8 @@ static const struct
>      { "-0e-10", 1, -0.0 },
>      { "0e-1000000", 1, 0.0 },
>      { "-0e-1000000", 1, -0.0 },
> -    { "000"NNBSP"000"NNBSP"000", 1, 0.0 },
> -    { "-000"NNBSP"000"NNBSP"000", 1, -0.0 }
> +    { "000"NBSP"000"NBSP"000", 1, 0.0 },
> +    { "-000"NBSP"000"NBSP"000", 1, -0.0 }
>    };
>  #define NTESTS (sizeof (tests) / sizeof (tests[0]))
>  
> 
> Thanks,
>
  
Rafal Luzynski Aug. 17, 2018, 7:01 p.m. UTC | #2
16.08.2018 11:28 Marko Myllynen <myllynen@redhat.com> wrote:
> [...] But of course going back and forth on the glibc side is not ideal
> if CLDR does the change some time in the future.

That's my reason to oppose against this change but my opposition is weak.
That means, if other people want to introduce this change I will not
oppose anymore.

> But currently it is
> unclear when, if ever, that might happen, it could be several releases
> (years) from now.
>
> Perhaps do nothing for now, and prior next release try to conclude from
> the CLDR ticket whether it then seems warranted to apply this patch or not?

I hoped Unicode would reply more quickly.  If it does not then your idea looks
like a good middle ground.

Regards,

Rafal
  
Carlos O'Donell Aug. 21, 2018, 2:18 a.m. UTC | #3
On 08/17/2018 03:01 PM, Rafal Luzynski wrote:
> 16.08.2018 11:28 Marko Myllynen <myllynen@redhat.com> wrote:
>> [...] But of course going back and forth on the glibc side is not ideal
>> if CLDR does the change some time in the future.
> 
> That's my reason to oppose against this change but my opposition is weak.
> That means, if other people want to introduce this change I will not
> oppose anymore.

This is called an objection, the strong form is called a sustained objection.

Only sustained objection would block consensus on accepting a patch.

So it sounds like you don't have a sustained objection, you're just worried
about the changes causing confusion to our users, and I agree that could be
a problem, but being out of sync with CLDR is also a problem. Your objection
is recorded here.

>> But currently it is
>> unclear when, if ever, that might happen, it could be several releases
>> (years) from now.
>>
>> Perhaps do nothing for now, and prior next release try to conclude from
>> the CLDR ticket whether it then seems warranted to apply this patch or not?
> 
> I hoped Unicode would reply more quickly.  If it does not then your idea looks
> like a good middle ground.

Agreed.

Is there any way to get traction on this issue?

Ask the FSF to become a voting member for glibc at $18,000USD/year? :-)
  
Rafal Luzynski Aug. 21, 2018, 9:38 p.m. UTC | #4
21.08.2018 04:18 Carlos O'Donell <carlos@redhat.com> wrote:
> On 08/17/2018 03:01 PM, Rafal Luzynski wrote:
> > 16.08.2018 11:28 Marko Myllynen <myllynen@redhat.com> wrote:
> >> [...] But of course going back and forth on the glibc side is not ideal
> >> if CLDR does the change some time in the future.
> >
> > That's my reason to oppose against this change but my opposition is weak.
> > That means, if other people want to introduce this change I will not
> > oppose anymore.
>
> This is called an objection, the strong form is called a sustained objection.
>
> Only sustained objection would block consensus on accepting a patch.

Thank you for explaining.  Yes, I have an objection.

> So it sounds like you don't have a sustained objection, you're just worried
> about the changes causing confusion to our users,

More or less, that's true.

> and I agree that could be
> a problem, but being out of sync with CLDR is also a problem.

I did not know it was a problem.  We were talking many times about the automatic
scripts to feed data from CLDR but we don't have any.  Therefore I thought it
is good to follow CLDR but not a big problem if we don't follow CLDR for some
good reasons.

Of course, I don't express any objection against following CLDR.

> Your objection
> is recorded here.

Thank you.

[ cut the rest of the message as it does not seem to be directed to me. ]

Regards,

Rafal
  
Marko Myllynen Oct. 8, 2018, 11:16 a.m. UTC | #5
Hi,

On 2018-08-22 00:38, Rafal Luzynski wrote:
> 21.08.2018 04:18 Carlos O'Donell <carlos@redhat.com> wrote:
>> On 08/17/2018 03:01 PM, Rafal Luzynski wrote:
>>> 16.08.2018 11:28 Marko Myllynen <myllynen@redhat.com> wrote:
>>>> [...] But of course going back and forth on the glibc side is not ideal
>>>> if CLDR does the change some time in the future.
>>>
>>> That's my reason to oppose against this change but my opposition is weak.
>>> That means, if other people want to introduce this change I will not
>>> oppose anymore.
>>
>> This is called an objection, the strong form is called a sustained objection.
>>
>> Only sustained objection would block consensus on accepting a patch.
> 
> Thank you for explaining.  Yes, I have an objection.
> 
>> So it sounds like you don't have a sustained objection, you're just worried
>> about the changes causing confusion to our users,
> 
> More or less, that's true.
> 
>> and I agree that could be
>> a problem, but being out of sync with CLDR is also a problem.
> 
> I did not know it was a problem.  We were talking many times about the automatic
> scripts to feed data from CLDR but we don't have any.  Therefore I thought it
> is good to follow CLDR but not a big problem if we don't follow CLDR for some
> good reasons.

One perhaps related thing I noticed recently was that neither U+00A0 or
U+202F are classified as whitespace characters. locales/i18n_ctype has
this definition (based on ISO/IEC 30112, see
http://www.open-std.org/jtc1/sc35/wg5/docs/30112d10.pdf document page 30):

space /
   <U0009>..<U000D>;<U0020>;<U1680>;<U2000>..<U2006>;<U2008>..<U200A>;/
   <U2028>..<U2029>;<U205F>;<U3000>

Looking at pages about whitespace characters
(https://en.wikipedia.org/wiki/Whitespace_character) and Unicode spaces
(http://jkorpela.fi/chars/spaces.html) it seems that a couple of other
Unicode space characters are also omitted from that list.

Does anyone know is there a particular reason to omit U+00A0 and U+202F
and few others from the above classification?

Thanks,
  
Carlos O'Donell Oct. 8, 2018, 6:13 p.m. UTC | #6
On 10/8/18 7:16 AM, Marko Myllynen wrote:
> Hi,
> 
> On 2018-08-22 00:38, Rafal Luzynski wrote:
>> 21.08.2018 04:18 Carlos O'Donell <carlos@redhat.com> wrote:
>>> On 08/17/2018 03:01 PM, Rafal Luzynski wrote:
>>>> 16.08.2018 11:28 Marko Myllynen <myllynen@redhat.com> wrote:
>>>>> [...] But of course going back and forth on the glibc side is not ideal
>>>>> if CLDR does the change some time in the future.
>>>>
>>>> That's my reason to oppose against this change but my opposition is weak.
>>>> That means, if other people want to introduce this change I will not
>>>> oppose anymore.
>>>
>>> This is called an objection, the strong form is called a sustained objection.
>>>
>>> Only sustained objection would block consensus on accepting a patch.
>>
>> Thank you for explaining.  Yes, I have an objection.
>>
>>> So it sounds like you don't have a sustained objection, you're just worried
>>> about the changes causing confusion to our users,
>>
>> More or less, that's true.
>>
>>> and I agree that could be
>>> a problem, but being out of sync with CLDR is also a problem.
>>
>> I did not know it was a problem.  We were talking many times about the automatic
>> scripts to feed data from CLDR but we don't have any.  Therefore I thought it
>> is good to follow CLDR but not a big problem if we don't follow CLDR for some
>> good reasons.
> 
> One perhaps related thing I noticed recently was that neither U+00A0 or
> U+202F are classified as whitespace characters. locales/i18n_ctype has
> this definition (based on ISO/IEC 30112, see
> http://www.open-std.org/jtc1/sc35/wg5/docs/30112d10.pdf document page 30):
> 
> space /
>    <U0009>..<U000D>;<U0020>;<U1680>;<U2000>..<U2006>;<U2008>..<U200A>;/
>    <U2028>..<U2029>;<U205F>;<U3000>
> 
> Looking at pages about whitespace characters
> (https://en.wikipedia.org/wiki/Whitespace_character) and Unicode spaces
> (http://jkorpela.fi/chars/spaces.html) it seems that a couple of other
> Unicode space characters are also omitted from that list.
> 
> Does anyone know is there a particular reason to omit U+00A0 and U+202F
> and few others from the above classification?

The i18n_ctype file is autogenerated from the Unicode release data using
localedata/unicode-gen/gen_unicode_type.py.

The space data is subsequently derived from the API usage for unicodeutils
like this:

232     output_charclass(i18n_file, 'space', unicode_utils.is_space)

Is there a mistake there?
  
Florian Weimer Oct. 8, 2018, 6:51 p.m. UTC | #7
* Marko Myllynen:

> One perhaps related thing I noticed recently was that neither U+00A0 or
> U+202F are classified as whitespace characters. locales/i18n_ctype has
> this definition (based on ISO/IEC 30112, see
> http://www.open-std.org/jtc1/sc35/wg5/docs/30112d10.pdf document page 30):
>
> space /
>    <U0009>..<U000D>;<U0020>;<U1680>;<U2000>..<U2006>;<U2008>..<U200A>;/
>    <U2028>..<U2029>;<U205F>;<U3000>
>
> Looking at pages about whitespace characters
> (https://en.wikipedia.org/wiki/Whitespace_character) and Unicode spaces
> (http://jkorpela.fi/chars/spaces.html) it seems that a couple of other
> Unicode space characters are also omitted from that list.
>
> Does anyone know is there a particular reason to omit U+00A0 and U+202F
> and few others from the above classification?

I think it is deliberate to get the right behavior from line-breaking
algorithms.
  
Carlos O'Donell Oct. 8, 2018, 6:55 p.m. UTC | #8
On 10/8/18 2:51 PM, Florian Weimer wrote:
> * Marko Myllynen:
> 
>> One perhaps related thing I noticed recently was that neither U+00A0 or
>> U+202F are classified as whitespace characters. locales/i18n_ctype has
>> this definition (based on ISO/IEC 30112, see
>> http://www.open-std.org/jtc1/sc35/wg5/docs/30112d10.pdf document page 30):
>>
>> space /
>>    <U0009>..<U000D>;<U0020>;<U1680>;<U2000>..<U2006>;<U2008>..<U200A>;/
>>    <U2028>..<U2029>;<U205F>;<U3000>
>>
>> Looking at pages about whitespace characters
>> (https://en.wikipedia.org/wiki/Whitespace_character) and Unicode spaces
>> (http://jkorpela.fi/chars/spaces.html) it seems that a couple of other
>> Unicode space characters are also omitted from that list.
>>
>> Does anyone know is there a particular reason to omit U+00A0 and U+202F
>> and few others from the above classification?
> 
> I think it is deliberate to get the right behavior from line-breaking
> algorithms.
> 

I forgot we implement unicode_utils.py...

317 def is_space(code_point):
318     '''Checks whether the character with this code point is a space'''
319     # Don’t make U+00A0 a space. Non-breaking space means that all programs
320     # should treat it like a punctuation character, not like a space.
321     return (code_point == 0x0020 # ' '
322             or code_point == 0x000C # '\f'
323             or code_point == 0x000A # '\n'
324             or code_point == 0x000D # '\r'
325             or code_point == 0x0009 # '\t'
326             or code_point == 0x000B # '\v'
327             # Categories Zl, Zp, and Zs without mention of "<noBreak>"
328             or (UNICODE_ATTRIBUTES[code_point]['name']
329                 and
330                 (UNICODE_ATTRIBUTES[code_point]['category'] in ['Zl', 'Zp']
331                  or
332                  (UNICODE_ATTRIBUTES[code_point]['category'] in ['Zs']
333                   and
334                   '<noBreak>' not in
335                   UNICODE_ATTRIBUTES[code_point]['decomposition']))))


And the properties support this:

DerivedCoreProperties.txt:00A0          ; Grapheme_Base # Zs       NO-BREAK SPACE
EastAsianWidth.txt:00A0;N           # Zs         NO-BREAK SPACE
PropList.txt:00A0          ; White_Space # Zs       NO-BREAK SPACE
UnicodeData.txt:00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
UnicodeData.txt:100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;;

So it's a <noBreak> space.
  
Marko Myllynen Oct. 9, 2018, 8:38 a.m. UTC | #9
Hi,

On 2018-10-08 21:55, Carlos O'Donell wrote:
> On 10/8/18 2:51 PM, Florian Weimer wrote:
>> * Marko Myllynen:
>>
>>> One perhaps related thing I noticed recently was that neither U+00A0 or
>>> U+202F are classified as whitespace characters. locales/i18n_ctype has
>>> this definition (based on ISO/IEC 30112, see
>>> http://www.open-std.org/jtc1/sc35/wg5/docs/30112d10.pdf document page 30):
>>>
>>> space /
>>>    <U0009>..<U000D>;<U0020>;<U1680>;<U2000>..<U2006>;<U2008>..<U200A>;/
>>>    <U2028>..<U2029>;<U205F>;<U3000>
>>>
>>> Looking at pages about whitespace characters
>>> (https://en.wikipedia.org/wiki/Whitespace_character) and Unicode spaces
>>> (http://jkorpela.fi/chars/spaces.html) it seems that a couple of other
>>> Unicode space characters are also omitted from that list.
>>>
>>> Does anyone know is there a particular reason to omit U+00A0 and U+202F
>>> and few others from the above classification?
>>
>> I think it is deliberate to get the right behavior from line-breaking
>> algorithms.
> 
> I forgot we implement unicode_utils.py...
> 
> 317 def is_space(code_point):
> 318     '''Checks whether the character with this code point is a space'''
> 319     # Don’t make U+00A0 a space. Non-breaking space means that all programs
> 320     # should treat it like a punctuation character, not like a space.
> 
> And the properties support this:
> 
> DerivedCoreProperties.txt:00A0          ; Grapheme_Base # Zs       NO-BREAK SPACE
> EastAsianWidth.txt:00A0;N           # Zs         NO-BREAK SPACE
> PropList.txt:00A0          ; White_Space # Zs       NO-BREAK SPACE
> UnicodeData.txt:00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 0020;;;;N;NON-BREAKING SPACE;;;;
> UnicodeData.txt:100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;;

Thanks, so the above conforms to ISO/IEC 30112 and is deliberately
omitting no-break spaces, at least for line-breaking algorithms.

I wonder would it make sense to consider an addition to provide a
function that would recognize non-breaking spaces, to allow applications
to detect something like "123 456" as a single number, regardless of the
exact variant of no-break space used in between.

I'm not sure on what level such an addition should ideally be done
(standards, GNU/glibc, a higher-level library, perhaps something else),
so I won't start championing such a change further.

Thanks,
  
Florian Weimer Oct. 9, 2018, 9:12 a.m. UTC | #10
* Marko Myllynen:

> I wonder would it make sense to consider an addition to provide a
> function that would recognize non-breaking spaces, to allow applications
> to detect something like "123 456" as a single number, regardless of the
> exact variant of no-break space used in between.
>
> I'm not sure on what level such an addition should ideally be done
> (standards, GNU/glibc, a higher-level library, perhaps something else),
> so I won't start championing such a change further.

I think this falls under the general processing of Unicode character
processing, and we have only very few of those in glibc, and they are
not widely used by applications, so I'm not sure if glibc would be the
appropriate place.

Sounds more like something for ICU or libunistring to me.
  
Rafal Luzynski Oct. 9, 2018, 8:59 p.m. UTC | #11
9.10.2018 10:38 Marko Myllynen <myllynen@redhat.com> wrote:
> [...]
> I wonder would it make sense to consider an addition to provide a
> function that would recognize non-breaking spaces, to allow applications
> to detect something like "123 456" as a single number, regardless of the
> exact variant of no-break space used in between.

I think that what we need is to split the "space" class into the
subclasses: "breaking space" and "non-breaking space", or maybe rather
define just "breaking space" and "non-breaking space":

    def is_breaking_space(conde_point):
    '''

    def is_non_breaking_space(code_point):
    '''

    def is_space(code_point):
        return is_breaking_space(code_point) ||
is_non_breaking_space(code_point)

so that application would be able to distinguish whether a space
is breaking or non-breaking or whether it is a space in general.

> I'm not sure on what level such an addition should ideally be done
> (standards, GNU/glibc, a higher-level library, perhaps something else),
> so I won't start championing such a change further.

Same here.

Regards,

Rafal
  
Marko Myllynen Dec. 17, 2018, 9:40 a.m. UTC | #12
Hi,

On 21/08/2018 05.18, Carlos O'Donell wrote:
> On 08/17/2018 03:01 PM, Rafal Luzynski wrote:
>> 16.08.2018 11:28 Marko Myllynen <myllynen@redhat.com> wrote:
>>> 
>>> But currently it is
>>> unclear when, if ever, that might happen, it could be several releases
>>> (years) from now.
>>>
>>> Perhaps do nothing for now, and prior next release try to conclude from
>>> the CLDR ticket whether it then seems warranted to apply this patch or not?
>>
>> I hoped Unicode would reply more quickly.  If it does not then your idea looks
>> like a good middle ground.
> 
> Agreed.

It looks like this approach paid off, there's been a recent update on
the CLDR ticket that gives an impression that it might be best to keep
using NNBSP in glibc as CLDR is perhaps a little closer adapting NNBSP
as well:

https://unicode.org/cldr/trac/ticket/11217

So I think we should not apply this patch for 2.29. We should still
recheck the CLDR status around this at some later point for a possible
final decision and in case it would be (perhaps slightly unanticipated)
to stick with NBSP then we'd need to reconsider this for glibc as well.

Thanks,
  
Rafal Luzynski Dec. 17, 2018, 11:43 p.m. UTC | #13
17.12.2018 10:40 Marko Myllynen <myllynen@redhat.com> wrote:
> [...] there's been a recent update on
> the CLDR ticket that gives an impression that it might be best to keep
> using NNBSP in glibc as CLDR is perhaps a little closer adapting NNBSP
> as well:
> 
> https://unicode.org/cldr/trac/ticket/11217

Thanks for reminding, I was looking at this recently as well.

> So I think we should not apply this patch for 2.29. We should still
> recheck the CLDR status around this at some later point for a possible
> final decision and in case it would be (perhaps slightly unanticipated)
> to stick with NBSP then we'd need to reconsider this for glibc as well.

It looks to me they are going to accept NNBSP but definitely, if they
say that they want to stick with NBSP or they decide to stop working
on the issue then we will have to switch to NBSP.

Regards,

Rafal
  
Florian Weimer Dec. 18, 2018, 9:13 a.m. UTC | #14
* Rafal Luzynski:

> It looks to me they are going to accept NNBSP but definitely, if they
> say that they want to stick with NBSP or they decide to stop working
> on the issue then we will have to switch to NBSP.

To me it would suggest that we should re-evaluate CLDR as a data source.

Thanks,
Florian
  
Marko Myllynen Dec. 18, 2018, 1:15 p.m. UTC | #15
Hi Florian,

On 18/12/2018 11.13, Florian Weimer wrote:
> * Rafal Luzynski:
> 
>> It looks to me they are going to accept NNBSP but definitely, if they
>> say that they want to stick with NBSP or they decide to stop working
>> on the issue then we will have to switch to NBSP.
> 
> To me it would suggest that we should re-evaluate CLDR as a data source.

Care to elaborate a bit? Do you mean that should CLDR decide using NBSP
then glibc should reconsider using CLDR as a data source in this
particular case or in general? Wouldn't it be beneficial to follow CLDR
regardless of their choice of NBSP or NNBSP?

Thanks,
  
Florian Weimer Dec. 19, 2018, 3:57 p.m. UTC | #16
* Marko Myllynen:

> Hi Florian,
>
> On 18/12/2018 11.13, Florian Weimer wrote:
>> * Rafal Luzynski:
>> 
>>> It looks to me they are going to accept NNBSP but definitely, if they
>>> say that they want to stick with NBSP or they decide to stop working
>>> on the issue then we will have to switch to NBSP.
>> 
>> To me it would suggest that we should re-evaluate CLDR as a data source.
>
> Care to elaborate a bit? Do you mean that should CLDR decide using NBSP
> then glibc should reconsider using CLDR as a data source in this
> particular case or in general? Wouldn't it be beneficial to follow CLDR
> regardless of their choice of NBSP or NNBSP?

I don't see a value in following CLDR itself, particularly if they do
not agree with what users want and what standards say.

Thanks,
Florian
  

Patch

diff --git a/localedata/locales/aa_DJ b/localedata/locales/aa_DJ
index fcb9af8..4c0bdd8 100644
--- a/localedata/locales/aa_DJ
+++ b/localedata/locales/aa_DJ
@@ -88,7 +88,7 @@  LC_MONETARY
 int_curr_symbol       "DJF "
 currency_symbol       "Fdj"
 mon_decimal_point     "."
-mon_thousands_sep     "<U202F>"
+mon_thousands_sep     "<U00A0>"
 mon_grouping          3;3
 positive_sign         ""
 negative_sign         "-"
diff --git a/localedata/locales/az_AZ b/localedata/locales/az_AZ
index 6fe8839..450db3f 100644
--- a/localedata/locales/az_AZ
+++ b/localedata/locales/az_AZ
@@ -158,7 +158,7 @@  LC_MONETARY
 int_curr_symbol           "AZN "
 currency_symbol           "<U20BC>"
 mon_decimal_point         "."
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/be_BY b/localedata/locales/be_BY
index 324379b..1314f59 100644
--- a/localedata/locales/be_BY
+++ b/localedata/locales/be_BY
@@ -105,7 +105,7 @@  LC_MONETARY
 int_curr_symbol           "BYR "
 currency_symbol           "<U0440><U0443><U0431>"
 mon_decimal_point         "."
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/be_BY@latin b/localedata/locales/be_BY@latin
index 43b13cc..e5b0fd8 100644
--- a/localedata/locales/be_BY@latin
+++ b/localedata/locales/be_BY@latin
@@ -126,7 +126,7 @@  LC_MONETARY
 int_curr_symbol           "BYR "
 currency_symbol           "Rub"
 mon_decimal_point         "."
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/bg_BG b/localedata/locales/bg_BG
index 7a9cfa0..cc954fd 100644
--- a/localedata/locales/bg_BG
+++ b/localedata/locales/bg_BG
@@ -251,7 +251,7 @@  LC_MONETARY
 int_curr_symbol           "BGN "
 currency_symbol           "<U043B><U0432>."
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/bs_BA b/localedata/locales/bs_BA
index 3b18056..ca1f54a 100644
--- a/localedata/locales/bs_BA
+++ b/localedata/locales/bs_BA
@@ -75,7 +75,7 @@  LC_MONETARY
 int_curr_symbol           "BAM "
 currency_symbol           "KM"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/ce_RU b/localedata/locales/ce_RU
index 03e60f8..49d0123 100644
--- a/localedata/locales/ce_RU
+++ b/localedata/locales/ce_RU
@@ -106,7 +106,7 @@  LC_MONETARY
 int_curr_symbol    "RUB "
 currency_symbol    "<U20BD>"
 mon_decimal_point  "."
-mon_thousands_sep  "<U202F>"
+mon_thousands_sep  "<U00A0>"
 mon_grouping       3;3
 positive_sign      ""
 negative_sign      "-"
diff --git a/localedata/locales/crh_UA b/localedata/locales/crh_UA
index b2ac8c6..ca94e8c 100644
--- a/localedata/locales/crh_UA
+++ b/localedata/locales/crh_UA
@@ -116,7 +116,7 @@  LC_MONETARY
 int_curr_symbol           "UAH "
 currency_symbol           "<U20B4>"
 mon_decimal_point         "."
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/cs_CZ b/localedata/locales/cs_CZ
index 41fbd2b..2db44e2 100644
--- a/localedata/locales/cs_CZ
+++ b/localedata/locales/cs_CZ
@@ -237,7 +237,7 @@  LC_MONETARY
 int_curr_symbol		"CZK "
 currency_symbol		"K<U010D>"
 mon_decimal_point	","
-mon_thousands_sep	"<U202F>"
+mon_thousands_sep	"<U00A0>"
 mon_grouping      	3;3
 positive_sign		""
 negative_sign		"-"
@@ -258,7 +258,7 @@  END LC_MONETARY
 LC_NUMERIC
 
 decimal_point		","
-thousands_sep		"<U202F>"
+thousands_sep		"<U00A0>"
 grouping		3;3
 
 END LC_NUMERIC
diff --git a/localedata/locales/cv_RU b/localedata/locales/cv_RU
index e9247b3..57d5646 100644
--- a/localedata/locales/cv_RU
+++ b/localedata/locales/cv_RU
@@ -118,7 +118,7 @@  int_curr_symbol           "RUB "
 currency_symbol "<U20BD>"
 
 mon_decimal_point         "."
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/de_AT b/localedata/locales/de_AT
index b8cbbe1..1e411d6 100644
--- a/localedata/locales/de_AT
+++ b/localedata/locales/de_AT
@@ -65,7 +65,7 @@  LC_MONETARY
 int_curr_symbol           "EUR "
 currency_symbol           "<U20AC>"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/eo b/localedata/locales/eo
index 33a8103..37296a1 100644
--- a/localedata/locales/eo
+++ b/localedata/locales/eo
@@ -119,7 +119,7 @@  LC_MONETARY
 int_curr_symbol     "XDR "
 currency_symbol     "<U00A4>"
 mon_decimal_point   ","
-mon_thousands_sep   "<U202F>"
+mon_thousands_sep   "<U00A0>"
 mon_grouping        3;3
 positive_sign       ""
 negative_sign       "-"
diff --git a/localedata/locales/es_CR b/localedata/locales/es_CR
index f76a096..617d8d8 100644
--- a/localedata/locales/es_CR
+++ b/localedata/locales/es_CR
@@ -59,7 +59,7 @@  int_curr_symbol      "CRC "
 currency_symbol      "<U20A1>"
 % Decreto Ejecutivo 29660
 mon_decimal_point    ","
-mon_thousands_sep    "<U202F>"
+mon_thousands_sep    "<U00A0>"
 mon_grouping         3;3
 positive_sign        ""
 negative_sign        "-"
@@ -76,7 +76,7 @@  END LC_MONETARY
 LC_NUMERIC
 % Decreto Ejecutivo 29660
 decimal_point        ","
-thousands_sep        "<U202F>"
+thousands_sep        "<U00A0>"
 grouping             3;3
 END LC_NUMERIC
 
diff --git a/localedata/locales/es_MX b/localedata/locales/es_MX
index 75cc000..6fad202 100644
--- a/localedata/locales/es_MX
+++ b/localedata/locales/es_MX
@@ -82,7 +82,7 @@  END LC_MONETARY
 
 LC_NUMERIC
 decimal_point        "."
-thousands_sep        "<U202F>"
+thousands_sep        "<U00A0>"
 grouping             3;3
 END LC_NUMERIC
 
diff --git a/localedata/locales/et_EE b/localedata/locales/et_EE
index f5c4714..06f0e4c 100644
--- a/localedata/locales/et_EE
+++ b/localedata/locales/et_EE
@@ -120,7 +120,7 @@  LC_MONETARY
 int_curr_symbol     "EUR "
 currency_symbol     "<U20AC>"
 mon_decimal_point   ","
-mon_thousands_sep   "<U202F>"
+mon_thousands_sep   "<U00A0>"
 mon_grouping        3;3
 positive_sign       ""
 negative_sign       "-"
@@ -136,7 +136,7 @@  END LC_MONETARY
 
 LC_NUMERIC
 decimal_point           ","
-thousands_sep           "<U202F>"
+thousands_sep           "<U00A0>"
 grouping                3;3
 END LC_NUMERIC
 
diff --git a/localedata/locales/fi_FI b/localedata/locales/fi_FI
index eeb2783..87fa9c1 100644
--- a/localedata/locales/fi_FI
+++ b/localedata/locales/fi_FI
@@ -184,7 +184,7 @@  LC_MONETARY
 int_curr_symbol      "EUR "
 currency_symbol      "<U20AC>"
 mon_decimal_point    ","
-mon_thousands_sep    "<U202F>"
+mon_thousands_sep    "<U00A0>"
 mon_grouping         3;3
 positive_sign        ""
 negative_sign        "-"
@@ -200,7 +200,7 @@  END LC_MONETARY
 
 LC_NUMERIC
 decimal_point        ","
-thousands_sep        "<U202F>"
+thousands_sep        "<U00A0>"
 grouping             3;3
 END LC_NUMERIC
 
diff --git a/localedata/locales/fr_CA b/localedata/locales/fr_CA
index e37d042..9892db5 100644
--- a/localedata/locales/fr_CA
+++ b/localedata/locales/fr_CA
@@ -67,7 +67,7 @@  LC_MONETARY
 int_curr_symbol           "CAD "
 currency_symbol           "$"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/fr_FR b/localedata/locales/fr_FR
index a18c514..8e0c802 100644
--- a/localedata/locales/fr_FR
+++ b/localedata/locales/fr_FR
@@ -78,7 +78,7 @@  LC_MONETARY
 int_curr_symbol           "EUR "
 currency_symbol           "<U20AC>"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
@@ -94,7 +94,7 @@  END LC_MONETARY
 
 LC_NUMERIC
 decimal_point             ","
-thousands_sep             "<U202F>"
+thousands_sep             "<U00A0>"
 grouping                  3
 END LC_NUMERIC
 
diff --git a/localedata/locales/fr_LU b/localedata/locales/fr_LU
index d9eb43e..5441bb7 100644
--- a/localedata/locales/fr_LU
+++ b/localedata/locales/fr_LU
@@ -68,7 +68,7 @@  LC_MONETARY
 int_curr_symbol           "EUR "
 currency_symbol           "<U20AC>"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
@@ -84,7 +84,7 @@  END LC_MONETARY
 
 LC_NUMERIC
 decimal_point             ","
-thousands_sep             "<U202F>"
+thousands_sep             "<U00A0>"
 grouping                  3;3
 END LC_NUMERIC
 
diff --git a/localedata/locales/ht_HT b/localedata/locales/ht_HT
index 0e0a79d..6dd2890 100644
--- a/localedata/locales/ht_HT
+++ b/localedata/locales/ht_HT
@@ -118,7 +118,7 @@  END LC_TIME
 
 LC_NUMERIC
 decimal_point ","
-thousands_sep "<U202F>"
+thousands_sep "<U00A0>"
 grouping      3
 END LC_NUMERIC
 
@@ -126,7 +126,7 @@  LC_MONETARY
 int_curr_symbol           "HTG "
 currency_symbol           "g"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/kk_KZ b/localedata/locales/kk_KZ
index c29c84b..c29f5c2 100644
--- a/localedata/locales/kk_KZ
+++ b/localedata/locales/kk_KZ
@@ -113,7 +113,7 @@  LC_MONETARY
 int_curr_symbol           "KZT "
 currency_symbol           "<U20B8>"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
@@ -135,7 +135,7 @@  END LC_MONETARY
 
 LC_NUMERIC
 decimal_point             ","
-thousands_sep             "<U202F>"
+thousands_sep             "<U00A0>"
 grouping                  3;3
 END LC_NUMERIC
 
diff --git a/localedata/locales/ky_KG b/localedata/locales/ky_KG
index 871b8a8..5c146fb 100644
--- a/localedata/locales/ky_KG
+++ b/localedata/locales/ky_KG
@@ -97,7 +97,7 @@  LC_MONETARY
 int_curr_symbol           "KGS "
 currency_symbol           "<U0441><U043E><U043C>"
 mon_decimal_point         "."
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
@@ -113,7 +113,7 @@  END LC_MONETARY
 
 LC_NUMERIC
 decimal_point             ","
-thousands_sep             "<U202F>"
+thousands_sep             "<U00A0>"
 grouping                  3;3
 END LC_NUMERIC
 
diff --git a/localedata/locales/lv_LV b/localedata/locales/lv_LV
index a20cbdd..20ebe6c 100644
--- a/localedata/locales/lv_LV
+++ b/localedata/locales/lv_LV
@@ -132,7 +132,7 @@  LC_MONETARY
 int_curr_symbol   "EUR "
 currency_symbol   "<U20AC>"
 mon_decimal_point ","
-mon_thousands_sep "<U202F>"
+mon_thousands_sep "<U00A0>"
 mon_grouping      3;3
 positive_sign     ""
 negative_sign     "-"
@@ -148,7 +148,7 @@  END LC_MONETARY
 
 LC_NUMERIC
 decimal_point     ","
-thousands_sep     "<U202F>"
+thousands_sep     "<U00A0>"
 grouping          3;3
 END LC_NUMERIC
 
diff --git a/localedata/locales/mfe_MU b/localedata/locales/mfe_MU
index 7415e92..1ff9aaf 100644
--- a/localedata/locales/mfe_MU
+++ b/localedata/locales/mfe_MU
@@ -118,7 +118,7 @@  LC_MONETARY
 int_curr_symbol     "MUR "
 currency_symbol     "<U20A8>"
 mon_decimal_point   "."
-mon_thousands_sep   "<U202F>"
+mon_thousands_sep   "<U00A0>"
 mon_grouping        3;3
 positive_sign       ""
 negative_sign       "-"
@@ -137,7 +137,7 @@  END LC_MONETARY
 
 LC_NUMERIC
 decimal_point          "."
-thousands_sep          "<U202F>"
+thousands_sep          "<U00A0>"
 grouping               3
 END LC_NUMERIC
 
diff --git a/localedata/locales/mg_MG b/localedata/locales/mg_MG
index 266ff17..46e80d7 100644
--- a/localedata/locales/mg_MG
+++ b/localedata/locales/mg_MG
@@ -74,7 +74,7 @@  LC_MONETARY
 int_curr_symbol           "MGA "
 currency_symbol           "Ar"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/mhr_RU b/localedata/locales/mhr_RU
index 85ac21b..03eeb84 100644
--- a/localedata/locales/mhr_RU
+++ b/localedata/locales/mhr_RU
@@ -70,7 +70,7 @@  LC_MONETARY
 int_curr_symbol           "RUB "
 currency_symbol           "<U20BD>"
 mon_decimal_point         "."
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/mk_MK b/localedata/locales/mk_MK
index 87bae1d..3b8dd76 100644
--- a/localedata/locales/mk_MK
+++ b/localedata/locales/mk_MK
@@ -95,7 +95,7 @@  LC_MONETARY
 int_curr_symbol           "MKD "
 currency_symbol           "<U0434><U0435><U043D>"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
@@ -111,7 +111,7 @@  END LC_MONETARY
 
 LC_NUMERIC
 decimal_point             ","
-thousands_sep             "<U202F>"
+thousands_sep             "<U00A0>"
 grouping                  3;3
 END LC_NUMERIC
 
diff --git a/localedata/locales/mn_MN b/localedata/locales/mn_MN
index fbcf04f..0a2ce6f 100644
--- a/localedata/locales/mn_MN
+++ b/localedata/locales/mn_MN
@@ -137,7 +137,7 @@  LC_MONETARY
 int_curr_symbol     "MNT "
 currency_symbol     "<U20AE>"
 mon_decimal_point   "."
-mon_thousands_sep   "<U202F>"
+mon_thousands_sep   "<U00A0>"
 mon_grouping        3;3
 positive_sign       ""
 negative_sign       "-"
diff --git a/localedata/locales/nb_NO b/localedata/locales/nb_NO
index a8675b6..efc0ec8 100644
--- a/localedata/locales/nb_NO
+++ b/localedata/locales/nb_NO
@@ -173,7 +173,7 @@  LC_MONETARY
 int_curr_symbol         "NOK "
 currency_symbol         "kr"
 mon_decimal_point       ","
-mon_thousands_sep       "<U202F>"
+mon_thousands_sep       "<U00A0>"
 mon_grouping            3;3
 positive_sign           ""
 negative_sign           "-"
@@ -189,7 +189,7 @@  END LC_MONETARY
 
 LC_NUMERIC
 decimal_point           ","
-thousands_sep           "<U202F>"
+thousands_sep           "<U00A0>"
 grouping                3;3
 END LC_NUMERIC
 
diff --git a/localedata/locales/nl_AW b/localedata/locales/nl_AW
index 57e8e69..e131975 100644
--- a/localedata/locales/nl_AW
+++ b/localedata/locales/nl_AW
@@ -50,7 +50,7 @@  LC_MONETARY
 int_curr_symbol     "AWG "
 currency_symbol     "Afl."
 mon_decimal_point   ","
-mon_thousands_sep   "<U202F>"
+mon_thousands_sep   "<U00A0>"
 mon_grouping        3;3
 positive_sign       ""
 negative_sign       "-"
diff --git a/localedata/locales/nl_NL b/localedata/locales/nl_NL
index 1ab3277..c30b170 100644
--- a/localedata/locales/nl_NL
+++ b/localedata/locales/nl_NL
@@ -74,7 +74,7 @@  LC_MONETARY
 int_curr_symbol           "EUR "
 currency_symbol           "<U20AC>"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/nn_NO b/localedata/locales/nn_NO
index c8da4ce..97efcb9 100644
--- a/localedata/locales/nn_NO
+++ b/localedata/locales/nn_NO
@@ -56,7 +56,7 @@  LC_MONETARY
 int_curr_symbol       "NOK "
 currency_symbol       "kr"
 mon_decimal_point     ","
-mon_thousands_sep     "<U202F>"
+mon_thousands_sep     "<U00A0>"
 mon_grouping          3
 positive_sign         ""
 negative_sign         "-"
diff --git a/localedata/locales/pap_AW b/localedata/locales/pap_AW
index 7c4aebc..49645fa 100644
--- a/localedata/locales/pap_AW
+++ b/localedata/locales/pap_AW
@@ -77,7 +77,7 @@  LC_MONETARY
 int_curr_symbol           "AWG "
 currency_symbol           "<U0192>"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/pap_CW b/localedata/locales/pap_CW
index 725ff59..92ad271 100644
--- a/localedata/locales/pap_CW
+++ b/localedata/locales/pap_CW
@@ -77,7 +77,7 @@  LC_MONETARY
 int_curr_symbol           "ANG "
 currency_symbol           "<U0192>"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/pl_PL b/localedata/locales/pl_PL
index 4c1b2a8..e6ec0c4 100644
--- a/localedata/locales/pl_PL
+++ b/localedata/locales/pl_PL
@@ -144,7 +144,7 @@  LC_MONETARY
 int_curr_symbol           "PLN "
 currency_symbol           "z<U0142>"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3
 positive_sign             ""
 negative_sign             "-"
@@ -160,7 +160,7 @@  END LC_MONETARY
 
 LC_NUMERIC
 decimal_point             ","
-thousands_sep             "<U202F>"
+thousands_sep             "<U00A0>"
 grouping                  3
 END LC_NUMERIC
 
diff --git a/localedata/locales/ru_RU b/localedata/locales/ru_RU
index fdb2059..4444a74 100644
--- a/localedata/locales/ru_RU
+++ b/localedata/locales/ru_RU
@@ -83,7 +83,7 @@  LC_MONETARY
 int_curr_symbol           "RUB "
 currency_symbol           "<U20BD>"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
@@ -99,7 +99,7 @@  END LC_MONETARY
 
 LC_NUMERIC
 decimal_point             ","
-thousands_sep             "<U202F>"
+thousands_sep             "<U00A0>"
 grouping                  3;3
 END LC_NUMERIC
 
diff --git a/localedata/locales/ru_UA b/localedata/locales/ru_UA
index 381370c..0222bbd 100644
--- a/localedata/locales/ru_UA
+++ b/localedata/locales/ru_UA
@@ -62,7 +62,7 @@  LC_MONETARY
 int_curr_symbol           "UAH "
 currency_symbol           "<U20B4>"
 mon_decimal_point         "."
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/sk_SK b/localedata/locales/sk_SK
index 94e6e12..f3e0775 100644
--- a/localedata/locales/sk_SK
+++ b/localedata/locales/sk_SK
@@ -91,7 +91,7 @@  LC_MONETARY
 int_curr_symbol		"EUR "
 currency_symbol		"<U20AC>"
 mon_decimal_point	","
-mon_thousands_sep	"<U202F>"
+mon_thousands_sep	"<U00A0>"
 mon_grouping      	3;3
 positive_sign		""
 negative_sign		"-"
@@ -112,7 +112,7 @@  END LC_MONETARY
 LC_NUMERIC
 
 decimal_point		","
-thousands_sep		"<U202F>"
+thousands_sep		"<U00A0>"
 grouping		3;3
 
 END LC_NUMERIC
diff --git a/localedata/locales/sl_SI b/localedata/locales/sl_SI
index 6157b26..545e059 100644
--- a/localedata/locales/sl_SI
+++ b/localedata/locales/sl_SI
@@ -2134,7 +2134,7 @@  LC_MONETARY
 int_curr_symbol           "EUR "
 currency_symbol           "<U20AC>"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
@@ -2150,7 +2150,7 @@  END LC_MONETARY
 
 LC_NUMERIC
 decimal_point             ","
-thousands_sep             "<U202F>"
+thousands_sep             "<U00A0>"
 grouping                  0;0
 END LC_NUMERIC
 
diff --git a/localedata/locales/sq_MK b/localedata/locales/sq_MK
index c2325f3..ad34895 100644
--- a/localedata/locales/sq_MK
+++ b/localedata/locales/sq_MK
@@ -54,7 +54,7 @@  LC_MONETARY
 int_curr_symbol           "MKD "
 currency_symbol           "den"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/sv_SE b/localedata/locales/sv_SE
index aa28c23..8f37fd7 100644
--- a/localedata/locales/sv_SE
+++ b/localedata/locales/sv_SE
@@ -180,7 +180,7 @@  LC_MONETARY
 int_curr_symbol         "SEK "
 currency_symbol         "kr"
 mon_decimal_point       ","
-mon_thousands_sep       "<U202F>"
+mon_thousands_sep       "<U00A0>"
 mon_grouping            3;3
 positive_sign           ""
 negative_sign           "-"
@@ -196,7 +196,7 @@  END LC_MONETARY
 
 LC_NUMERIC
 decimal_point           ","
-thousands_sep           "<U202F>"
+thousands_sep           "<U00A0>"
 grouping                3;3
 END LC_NUMERIC
 
diff --git a/localedata/locales/tg_TJ b/localedata/locales/tg_TJ
index 35dfca4..9dc2231 100644
--- a/localedata/locales/tg_TJ
+++ b/localedata/locales/tg_TJ
@@ -132,7 +132,7 @@  LC_MONETARY
 int_curr_symbol           "TJS "
 currency_symbol           "<U0440><U0443><U0431>"
 mon_decimal_point         "."
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/tt_RU b/localedata/locales/tt_RU
index b3b79b2..84d2796 100644
--- a/localedata/locales/tt_RU
+++ b/localedata/locales/tt_RU
@@ -173,7 +173,7 @@  LC_MONETARY
 int_curr_symbol           "RUB "
 currency_symbol           "<U20BD>"
 mon_decimal_point         "."
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/tt_RU@iqtelif b/localedata/locales/tt_RU@iqtelif
index d4737c8..cfd0b80 100644
--- a/localedata/locales/tt_RU@iqtelif
+++ b/localedata/locales/tt_RU@iqtelif
@@ -76,7 +76,7 @@  LC_MONETARY
 int_curr_symbol           "RUB "
 currency_symbol           "<U20BD>"
 mon_decimal_point         "."
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/localedata/locales/uk_UA b/localedata/locales/uk_UA
index b8818bf..ab18b45 100644
--- a/localedata/locales/uk_UA
+++ b/localedata/locales/uk_UA
@@ -611,7 +611,7 @@  mon_decimal_point         ","
 % This string is used as a thousands separator when formatting monetary
 % quantities.
 % see LC_NUMERIC:thousands separator
-mon_thousands_sep         "<U202F>" % <NNBSP> (0X202F)
+mon_thousands_sep         "<U00A0>" % <NBSP> (0X00A0)
 
 % Define  the  size of each group of digits in formatted monetary
 % quantities.  The operand is a sequence of integers separated by
@@ -741,7 +741,7 @@  decimal_point             "," % see LC_MONETARY:mon_decimal_pint
 % The string that will be used as a group separator when formatting
 % numeric quantities.
 % see LC_MONETARY:mon_thousands_sep
-thousands_sep             "<U202F>" % <NNBSP> (0X202F)
+thousands_sep             "<U00A0>" % <NBSP> (0X00A0)
 
 % A string that describes the formatting of numeric quantities.
 %
diff --git a/localedata/locales/unm_US b/localedata/locales/unm_US
index 1e62c60..0590360 100644
--- a/localedata/locales/unm_US
+++ b/localedata/locales/unm_US
@@ -95,7 +95,7 @@  END LC_TIME
 
 LC_NUMERIC
 decimal_point           "."
-thousands_sep           "<U202F>"
+thousands_sep           "<U00A0>"
 grouping                2;2;2;3
 END LC_NUMERIC
 
@@ -103,7 +103,7 @@  LC_MONETARY
 int_curr_symbol         "USD "
 currency_symbol         "$"
 mon_decimal_point       "."
-mon_thousands_sep       "<U202F>"
+mon_thousands_sep       "<U00A0>"
 mon_grouping            3
 positive_sign           ""
 negative_sign           "-"
diff --git a/localedata/locales/wo_SN b/localedata/locales/wo_SN
index 47263d2..4911d85 100644
--- a/localedata/locales/wo_SN
+++ b/localedata/locales/wo_SN
@@ -74,7 +74,7 @@  LC_MONETARY
 int_curr_symbol           "XOF "
 currency_symbol           "CFA"
 mon_decimal_point         ","
-mon_thousands_sep         "<U202F>"
+mon_thousands_sep         "<U00A0>"
 mon_grouping              3;3
 positive_sign             ""
 negative_sign             "-"
diff --git a/stdlib/tst-strfmon_l.c b/stdlib/tst-strfmon_l.c
index 1994d62..ed7b08e 100644
--- a/stdlib/tst-strfmon_l.c
+++ b/stdlib/tst-strfmon_l.c
@@ -150,11 +150,11 @@  static const struct locale_pair tests[] =
       "tg_TJ.UTF-8",
       {
         {
-          "1\u202f234\u202f567.89 TJS", "1\u202f234\u202f567.89 \u0440\u0443\u0431",
+          "1\u00a0234\u00a0567.89 TJS", "1\u00a0234\u00a0567.89 \u0440\u0443\u0431",
           "1234567.89 TJS", "1234567.89 \u0440\u0443\u0431"
         },
         {
-          "-1\u202f234\u202f567.89 TJS", "-1\u202f234\u202f567.89 \u0440\u0443\u0431",
+          "-1\u00a0234\u00a0567.89 TJS", "-1\u00a0234\u00a0567.89 \u0440\u0443\u0431",
           "-1234567.89 TJS", "-1234567.89 \u0440\u0443\u0431"
         }
       }
diff --git a/stdlib/tst-strtod4.c b/stdlib/tst-strtod4.c
index aae9835..2d9d54c 100644
--- a/stdlib/tst-strtod4.c
+++ b/stdlib/tst-strtod4.c
@@ -3,7 +3,7 @@ 
 #include <stdlib.h>
 #include <string.h>
 
-#define NNBSP "\xe2\x80\xaf"
+#define NBSP "\xc2\xa0"
 
 static const struct
 {
@@ -12,8 +12,8 @@  static const struct
   double expected;
 } tests[] =
   {
-    { "000"NNBSP"000"NNBSP"000", "", 0.0 },
-    { "1"NNBSP"000"NNBSP"000,5x", "x", 1000000.5 }
+    { "000"NBSP"000"NBSP"000", "", 0.0 },
+    { "1"NBSP"000"NBSP"000,5x", "x", 1000000.5 }
   };
 #define NTESTS (sizeof (tests) / sizeof (tests[0]))
 
diff --git a/stdlib/tst-strtod5i.c b/stdlib/tst-strtod5i.c
index ee72dc1..1d3fe1a 100644
--- a/stdlib/tst-strtod5i.c
+++ b/stdlib/tst-strtod5i.c
@@ -22,7 +22,7 @@ 
 #include <string.h>
 #include <math.h>
 
-#define NNBSP "\xe2\x80\xaf"
+#define NBSP "\xc2\xa0"
 
 static const struct
 {
@@ -57,8 +57,8 @@  static const struct
     { "-0e-10", 1, -0.0 },
     { "0e-1000000", 1, 0.0 },
     { "-0e-1000000", 1, -0.0 },
-    { "000"NNBSP"000"NNBSP"000", 1, 0.0 },
-    { "-000"NNBSP"000"NNBSP"000", 1, -0.0 }
+    { "000"NBSP"000"NBSP"000", 1, 0.0 },
+    { "-000"NBSP"000"NBSP"000", 1, -0.0 }
   };
 #define NTESTS (sizeof (tests) / sizeof (tests[0]))