#2205 closed defect (fixed)
Unicode unequal comparison in location wizard when title contains non-ascii letters
| Reported by: | marisn | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | 7.2.0 |
| Component: | wxGUI | Version: | svn-trunk |
| Keywords: | Cc: | ||
| CPU: | Unspecified | Platform: | Unspecified |
Description
In location wizard one just has to use "āšņļ" as the location title.
C:\Program Files\GRASS GIS 7.0.svn\etc\gui\wxpython\location_wizard\wizard.py:20 64: UnicodeWarning: Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal if current_gdb != database:
PERMANENT/MYNAME seems to be created correctly (UTF-8 without BOM).
Tested on Vista with r59159
Change History (11)
follow-up: 2 comment:1 by , 10 years ago
follow-up: 4 comment:2 by , 10 years ago
Replying to marisn:
Still happens with 7.0.0 r63925 on Vista.
location title works for me in Vista, but not location name:
Traceback (most recent call last):
File "C:\OSGeo4W\apps\grass\grass-7.1.svn\gui\wxpython\gui_core\widgets.py", l
ine 759, in Validate
if not self._condition(text):
File "C:\OSGeo4W\apps\grass\grass-7.1.svn\etc\python\grass\script\core.py", li
ne 1509, in legal_name
's': s, 'il': illegal})
File "C:\OSGeo4W\apps\grass\grass-7.1.svn\etc\python\grass\script\core.py", li
ne 570, in warning
message(msg, flag='w')
File "C:\OSGeo4W\apps\grass\grass-7.1.svn\etc\python\grass\script\core.py", li
ne 516, in message
run_command("g.message", flags=flag, message=msg, errors='ignore')
File "C:\OSGeo4W\apps\grass\grass-7.1.svn\etc\python\grass\script\core.py", li
ne 373, in run_command
ps = start_command(*args, **kwargs)
File "C:\OSGeo4W\apps\grass\grass-7.1.svn\etc\python\grass\script\core.py", li
ne 349, in start_command
val = encode(val)
File "C:\OSGeo4W\apps\grass\grass-7.1.svn\etc\python\grass\script\utils.py", l
ine 218, in encode
return string.encode(enc)
File "C:\OSGeo4W\apps\Python27\lib\encodings\cp1252.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u0101' in position
18: character maps to <undefined>
comment:3 by , 10 years ago
Replying to marisn:
In location wizard one just has to use "āšņļ" as the location title.
C:\Program Files\GRASS GIS 7.0.svn\etc\gui\wxpython\location_wizard\wizard.py:20 64: UnicodeWarning: Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal if current_gdb != database:PERMANENT/MYNAME seems to be created correctly (UTF-8 without BOM).
Tested on Vista with r59159
It doesn't seem to do anything with the location title, the location name is important. What is the name of the location you are creating and what is the name of the location you were previously in (saved in rc file I think)?
comment:4 by , 10 years ago
Replying to hellik:
File "C:\OSGeo4W\apps\Python27\lib\encodings\cp1252.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u0101' in position
18: character maps to <undefined>
No surprise there. U+0101 ("LATIN SMALL LETTER A WITH MACRON") doesn't exist in cp1252 (Western Europe); I believe that cp1257 (Baltic) is the correct codepage for this.
comment:5 by , 10 years ago
Re-tested with 7.0.0 r64041 after removing the AppData/Roaming/GRASS folder and it was still an issue. I couldn't perform any other tests, as g.gui is failing on this build (different issue).
I managed to track it down - grass.gisenv() returns str, but database is unicode. I took the liberty to fix it for 7.1 in r64044 No more warnings on my Vista box and Linux box.
I would say that this needs to be backported to releasebranch (unless it needs to be reverted as a band aid and grass.gisenv() is changed to return unicode strings). I'm leaving for the wx and Python gurus to decide.
follow-up: 9 comment:8 by , 9 years ago
tested with
GRASS version: 7.1.svn GRASS SVN revision: 67403 Build date: 2015-12-29 Build platform: i386-w64-mingw32 GDAL: 1.11.3 PROJ.4: 4.9.2 GEOS: 3.5.0 SQLite: 3.7.17 Python: 2.7.4 wxPython: 2.8.12.1 Platform: Windows-7-6.1.7601-SP1 (OSGeo4W)
and āšņļ as the location name.
Traceback (most recent call last):
File "C:\OSGEO4~2\apps\grass\grass-7.1.svn\gui\wxpython\gui_core\widgets.py",
line 765, in Validate
if not self._condition(text):
File "C:\OSGEO4~2\apps\grass\grass-7.1.svn\etc\python\grass\script\core.py", l
ine 1559, in legal_name
's': s, 'il': illegal})
File "C:\OSGEO4~2\apps\grass\grass-7.1.svn\etc\python\grass\script\core.py", l
ine 618, in warning
message(msg, flag='w')
File "C:\OSGEO4~2\apps\grass\grass-7.1.svn\etc\python\grass\script\core.py", l
ine 563, in message
run_command("g.message", flags=flag, message=msg, errors='ignore')
File "C:\OSGEO4~2\apps\grass\grass-7.1.svn\etc\python\grass\script\core.py", l
ine 408, in run_command
ps = start_command(*args, **kwargs)
File "C:\OSGEO4~2\apps\grass\grass-7.1.svn\etc\python\grass\script\core.py", l
ine 367, in start_command
val = encode(val)
File "C:\OSGEO4~2\apps\grass\grass-7.1.svn\etc\python\grass\script\utils.py",
line 174, in encode
return string.encode(enc)
File "C:\OSGEO4~2\apps\Python27\lib\encodings\cp1252.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u0101' in position
18: character maps to <undefined>
so still an issue?
follow-up: 10 comment:9 by , 9 years ago
| Milestone: | 7.0.3 → 7.1.0 |
|---|---|
| Resolution: | → fixed |
| Status: | new → closed |
Replying to hellik:
so still an issue?
Your test is not an indicator of THIS problem. As per Glynn's comment, "āšņļ" will be a valid test only for Windows set to run with Baltic locale, you most likely run Western Europe version thus the test text should be: "äêíõû"
As in one year nobody has cared to deal with encoding mess, closing this as fixed in 7.1.0
comment:10 by , 9 years ago
Replying to marisn:
Replying to hellik:
so still an issue?
Your test is not an indicator of THIS problem. As per Glynn's comment, "āšņļ" will be a valid test only for Windows set to run with Baltic locale, you most likely run Western Europe version thus the test text should be: "äêíõû"
As in one year nobody has cared to deal with encoding mess, closing this as fixed in 7.1.0
I am not getting any error in trunk or releasebranch. When I specify new location name the wizard correctly reports non-ascii characters and doesn't allow me to continue. It's on my Ubuntu. Is there anything specific to trigger the error?

Still happens with 7.0.0 r63925 on Vista.