正确处理unicode字符串

时间:2019-09-10 17:03:34

标签: python-2.7 unicode

我有一个API,该API通常会获取带有包含数字“ /”,“。”的字符串的请求。和拉丁字符。像这样:

sq = u'/h97/D2/SNB6E961/2/B92TS667RE.html'

在某些情况下,我必须使用以下字符串生成一条消息:

 resp = unicode('Not found for string %s' % sq)

但是有时此API会像这样断开字符串:

sq = u'/h97/D2/SNB6E961/2/100%\u0445200B92TS667RE.html'

在这种情况下,由于unicode错误,我无法做出正确的响应:

r = u'/h97/D2/SNB6E961/2/100%\u0445200B92TS667RE.html'.encode('utf-8')
msg = 'Not found for string %s' % r
resp = unicode(msg)

最后一个字符串将导致异常:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1 in position 44: ordinal not in range(128)

我需要添加一些操作以避免此类情况,但不要更改“常规”执行路径。因此,我必须找到任何方法来将损坏的字符串添加到响应中。

当然,我可以只添加try-except并在没有该字符串的情况下做出响应。

但是我不是python unicode问题的专家,所以也许有一些更优雅的方法可以不创建新的响应,而只保留一行执行?

0 个答案:

没有答案