Písmeno „ř“ rozbíjí službu geoip.ubuntu.com/lookup

Už delší dobu mi linuxmint nabízí pro aktualizaci pouze americké servery. Dnes jsem to zkoumal, a zjistil, že pro určení polohy využívá službu na adrese http://geoip.ubuntu.com/lookup , která ale v mém případě zkolabuje, takže linuxmint pak nabídne jen výchozí mirrory. Chybové hlášení (viz dole) značí, že někde v názvu města, lokace, nebo možná i poskytovatele internetu se objevilo písmeno u'\u0159' ("ř") , se kterým užovka nepočítá. Nevíte, kde to mám hlásit? Reprodukovat chybu bude pro američana asi obtížné, to by se musel vypravit někam do Zábřehu, Přerova nebo podobné Řitky.

MOD_PYTHON ERROR

ProcessId:      22743
Interpreter:    'geoip.ubuntu.com'

ServerName:     'geoip.ubuntu.com'
DocumentRoot:   '/srv/geoip.ubuntu.com/www'

URI:            '/lookup'
Location:       '/lookup'
Directory:      None
Filename:       '/srv/geoip.ubuntu.com/cgi-bin/lookup.py'
PathInfo:       ''

Phase:          'PythonHandler'
Handler:        'lookup'

Traceback (most recent call last):

  File "/usr/lib/python2.7/dist-packages/mod_python/importer.py", line 1537, in HandlerDispatch
    default=default_handler, arg=req, silent=hlist.silent)

  File "/usr/lib/python2.7/dist-packages/mod_python/importer.py", line 1229, in _process_target
    result = _execute_target(config, req, object, arg)

  File "/usr/lib/python2.7/dist-packages/mod_python/importer.py", line 1128, in _execute_target
    result = object(arg)

  File "/srv/geoip.ubuntu.com/cgi-bin/lookup.py", line 61, in handler
    req.write(ans)

UnicodeEncodeError: 'ascii' codec can't encode character u'\u0159' in position 264: ordinal not in range(128)



Re:Písmeno „ř“ rozbíjí službu geoip.ubuntu.com/lookup
« Odpověď #1 kdy: 01. 08. 2024, 13:58:19 »
IMO má služba "jen" špatně naprogramovanou podporu UTF8 pro prehistorický python 2.7. Viz např. https://www.azavea.com/blog/2014/03/24/solving-unicode-problems-in-python-2-7/

Mně to hodí chybu znaku \u0148 - ň jako Plzeň :-)

Re:Písmeno „ř“ rozbíjí službu geoip.ubuntu.com/lookup
« Odpověď #2 kdy: 01. 08. 2024, 14:05:33 »
Spíše podporu UTF-8 vůbec nemá, resp. failne na čemkoliv non-ASCII: 'ascii' codec can't encode character u'\u0159' in position 264: ordinal not in range(128)

Re:Písmeno „ř“ rozbíjí službu geoip.ubuntu.com/lookup
« Odpověď #3 kdy: 01. 08. 2024, 20:50:54 »
IMO je to klasický problém starého pythonu, kde stringy s UTF8 vyžadují jiné zacházení a autoři té služby lookup.py s UTF8 znaky vůbec nepočítali.

tecka

  • ***
  • 159
    • Zobrazit profil
    • E-mail
Re:Písmeno „ř“ rozbíjí službu geoip.ubuntu.com/lookup
« Odpověď #4 kdy: 03. 08. 2024, 12:56:21 »
Jestli jde o "mintsources" (nebo jak se to jmenuje), tak to při selhání geoip použije LANG. Takže tipuju, že ten systém nemáš v češtině, ale můžeš to dočasně nastavit.
Kód: [Vybrat]
LANG=cs_CZ.UTF-8 mintsources


Re:Písmeno „ř“ rozbíjí službu geoip.ubuntu.com/lookup
« Odpověď #5 kdy: 27. 08. 2024, 10:31:41 »
Mě to hlásí pro \xe1.  A šlo by dát ttřeba geoip.ubuntu.com ma localhost, null route nebo
 Přes jiné rozhraní (britské vpn, to je blíž a taky a-z použivaj)

Re:Písmeno „ř“ rozbíjí službu geoip.ubuntu.com/lookup
« Odpověď #6 kdy: 27. 08. 2024, 11:10:43 »
To Ř/ř je nějaké zakleté.
Je to asi 14 dní, co jsem řešil problém v jedné starší aplikaci, kde někdo pro kódování použil .Net metodu HttpUtility.HtmlEncode(). Ta sice zakódovala speciální znaky i většinu písmen s diakritikou, ale zrovna Ř/ř nechala v původním stavu. A když jsem hledal, tak jsem žádnou spolehlivější metodu v .Net stejně nenašel (která by kódovala opravdu vše s ASCII >127).

Re:Písmeno „ř“ rozbíjí službu geoip.ubuntu.com/lookup
« Odpověď #7 kdy: 27. 08. 2024, 19:26:16 »
To Ř/ř je nějaké zakleté.
Je to asi 14 dní, co jsem řešil problém v jedné starší aplikaci, kde někdo pro kódování použil .Net metodu HttpUtility.HtmlEncode(). Ta sice zakódovala speciální znaky i většinu písmen s diakritikou, ale zrovna Ř/ř nechala v původním stavu. A když jsem hledal, tak jsem žádnou spolehlivější metodu v .Net stejně nenašel (která by kódovala opravdu vše s ASCII >127).

Ř není v HTML řídicí znak. Není tak důvod, aby jej metoda pojmenovaná HtmlEncode jakkoliv ošetřovala.

Re:Písmeno „ř“ rozbíjí službu geoip.ubuntu.com/lookup
« Odpověď #8 kdy: 27. 08. 2024, 20:24:19 »
Ř není v HTML řídicí znak. Není tak důvod, aby jej metoda pojmenovaná HtmlEncode jakkoliv ošetřovala.
Třeba Á/á také ne a to je kódované. (Á á)

Ale jak jsem psal, nebylo to mé řešení, jen jsem to spravoval (po 10 letech provozu, kdy to nikomu nevadilo, protože nejspíš všechna ostatní písmena s diakritikou to kódovalo).

Re:Písmeno „ř“ a unicode zápis
« Odpověď #9 kdy: 30. 08. 2024, 12:51:45 »
PokuD se tom chcete vrtat a.přijít na kloub napadá:mě  najít si utf8 zápis těchto písmen

Utf-8 má vlastnost robustnosti, znaky 0x0-7F bez omezení, ale  2znakové sekvence utf8 je vždy 0b110xxxxx + 0b10xxxxxx,
3znakové  : 0b1110xxxx, 0b10....,0b10...., snad jsem to nepomotal,viz wiki

Porovnejte jestli ř jaký má pattern oproti č,ž,éí... V těch horních bitech, bude k tomu potřeba to původní kódování(iso88,cp1250)
« Poslední změna: 30. 08. 2024, 12:53:21 od Ħαℓ₸℮ℵ ␏⫢ ⦚ »