Ticket #1798 (closed defect: fixed)
API search in non-q fields has exception for unicode characters
| Reported by: | dread | Owned by: | |
|---|---|---|---|
| Priority: | awaiting triage | Milestone: | |
| Component: | ckan | Keywords: | |
| Cc: | icmurray | Repository: | ckan |
| Theme: | none |
Description
You get an exception if you use the API to search packages and specify a non-ascii character in a field other than q.
For example:
http://catalogue.data.gov.uk/api/search/package?title=%E2%80%93
This "N-dash" (Unicode character 2013) causes this exception:
Module ckan.controllers.api:460 in search
<< if ver in u'12':
# Otherwise, put all unrecognised ones into the q parameter
params = convert_legacy_parameters_to_solr(params)
query = query_for(model.Package)
results = query.run(params)
>> params = convert_legacy_parameters_to_solr(params)
Module ckan.lib.search.query:38 in convert_legacy_parameters_to_solr
<< for search_key in non_solr_params:
value_obj = legacy_params[search_key]
value = str(value_obj).replace('+', ' ')
if search_key == 'all_fields':
if value:
>> value = str(value_obj).replace('+', ' ')
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 30: ordinal not in range(128)
This problem affects CKAN 1.5 and 1.5.1 only.
Change History
Note: See
TracTickets for help on using
tickets.

Was fixed by Ian in https://github.com/okfn/ckan/commit/5a9054459e3833443bed3e118bbbb6c442e55b0b on branch feature-1453-flexible-tag-names.
This has gone into CKAN 1.6.