@partizan
partizan
24 Oct 2014

так, у меня есть строка

s = 'Grafing Bei M\xfcnchen'

как из неё сделать

s = u'Grafing Bei M\xfcnchen'

24 Oct 2014

UnicodeDecodeError: 'utf8' codec can't decode byte 0xfc in position 13: invalid start byte

#tltnd/3 в ответ на /1
24 Oct 2014

а, на \xfc внимания сразу не обратил. Тогда узнавай, в какой кодировке эта строка, и декодируй из неё

#tltnd/5 в ответ на /3
24 Oct 2014

А хотя нет. Это какой-то, блджад, однобайтовый юникод o_O Я такого не видел никогда

#tltnd/6 в ответ на /5
24 Oct 2014

ну насколько я понимаю это юникод, по крайней мере если сделать u'Grafing Bei M\xfcnchen' - все будет норм

#tltnd/7 в ответ на /5
24 Oct 2014

partizan, с u'' будет норм, потому что ты сразу создаёшь юникодостроку и \xfc там честно обозначает ü. А через '' ты создаёшь обыкновенную байтовую строку, и \xfc тут значит байт 252, а не какой-либо символ. Поэтому, чтобы запхнуть туда какой-то не-ascii символ, тебе надо определяться с кодировкой и записывать соответствующие ей байты. Например, в кодировке utf-8 ü запишется как \xc3\xbc и decode('utf-8') нормально отработает

#tltnd/8 в ответ на /7
24 Oct 2014

разобрался,
In [19]: chardet.detect(s)
Out[19]: {'confidence': 0.8293654479719451, 'encoding': 'ISO-8859-2'}

#tltnd/9 в ответ на /8
24 Oct 2014

Полазил в википедии — с таким же успехом это может быть любая другая кодировка из набора ISO 8859, так что аккуратнее

#tltnd/15 в ответ на /9
24 Oct 2014

наркоманы, везде наркоманы! почему бы не юзать юникод((

#tltnd/16 в ответ на /15
24 Oct 2014

А откуда такие строки вообще берутся, кстати?

#tltnd/17 в ответ на /16
24 Oct 2014

не понял проблемы. У тебя двойка чтоль?

24 Oct 2014

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:

А вообще да, ты какую-то фигню на вход подаешь.

24 Oct 2014

как выяснилось, фигня - это кодировка iso-8859-2

#tltnd/11 в ответ на /10

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.