我有一个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问题的专家,所以也许有一些更优雅的方法可以不创建新的响应,而只保留一行执行?