24 Oct
2014
так, у меня есть строка
s = 'Grafing Bei M\xfcnchen'
как из неё сделать
s = u'Grafing Bei M\xfcnchen'
так, у меня есть строка
s = 'Grafing Bei M\xfcnchen'
как из неё сделать
s = u'Grafing Bei M\xfcnchen'
s = s.decode('utf-8')
не понял проблемы. У тебя двойка чтоль?
The errors argument specifies the response when the input string can’t be converted according to the encoding’s rules. Legal values for this argument are ‘strict’ (raise a UnicodeDecodeError exception), ‘replace’ (add U+FFFD, ‘REPLACEMENT CHARACTER’), or ‘ignore’ (just leave the character out of the Unicode result). The following examples show the differences:
А вообще да, ты какую-то фигню на вход подаешь.
UnicodeDecodeError: 'utf8' codec can't decode byte 0xfc in position 13: invalid start byte
а, на \xfc внимания сразу не обратил. Тогда узнавай, в какой кодировке эта строка, и декодируй из неё
А хотя нет. Это какой-то, блджад, однобайтовый юникод o_O Я такого не видел никогда
ну насколько я понимаю это юникод, по крайней мере если сделать u'Grafing Bei M\xfcnchen' - все будет норм
partizan, с u'' будет норм, потому что ты сразу создаёшь юникодостроку и \xfc там честно обозначает ü. А через '' ты создаёшь обыкновенную байтовую строку, и \xfc тут значит байт 252, а не какой-либо символ. Поэтому, чтобы запхнуть туда какой-то не-ascii символ, тебе надо определяться с кодировкой и записывать соответствующие ей байты. Например, в кодировке utf-8 ü запишется как \xc3\xbc и decode('utf-8') нормально отработает
разобрался,
In [19]: chardet.detect(s)
Out[19]: {'confidence': 0.8293654479719451, 'encoding': 'ISO-8859-2'}
Полазил в википедии — с таким же успехом это может быть любая другая кодировка из набора ISO 8859, так что аккуратнее
наркоманы, везде наркоманы! почему бы не юзать юникод((
А откуда такие строки вообще берутся, кстати?
из GeoIP