LINUX.ORG.RU

#*@*!ый русский язык

 , ,


0

2

В моем приложении необходимо использовать русский язык (у строк), но когда строка русская, то происходит следующая проблема (при попытке перевести ее в юникод:

Traceback (most recent call last):
  File "/home/ka2m/Python/svk-gui-beta/player.py", line 459, in Select
    self.SetMusicText()
  File "/home/ka2m/Python/svk-gui-beta/player.py", line 292, in SetMusicText
    atext = self.Shorter(atext)
  File "/home/ka2m/Python/svk-gui-beta/player.py", line 479, in Shorter
    utext = unicode(text)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 8: ordinal not in range(128)
self.SetMusicText():
def SetMusicText(self):
			atext = "Artist: " +self.playlist[self.pos+1][1]
			ttext = "Title: "+self.playlist[self.pos+1][2]
			self.Shorter(atext)
			self.Shorter(ttext)
			self.artistname.SetLabel(atext)
			self.titlename.SetLabel(ttext)
playlist - это обычный текстовый файл вида:
 http://cs4537.vkontakte.ru/u44930545/audio/e6eeaa5bf0e4.mp3n:Pink Floydn:Comfortably Numbn:Pink Floyd - Comfortably Numb
Сбоящая функция:
	def Shorter(self,text): #function to check if length is exceeded and change it to abcdef...
	 	text = text.encode('UTF-8')
		
		if len(text) >= 24:
	 	 	p = text[0:22]
	 	 	p = p + u" ..."
	 	 	return p
	 	else: return text 
Прошу помочь. С чистой латинецей работает нормально, а вот с русским и всякими там трифорсами - нет. Как понятно из кода: Python+wxPython

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

Ну и в какой кодировке эта кириллица? cp1251? utf8?

AITap ★★★★★
()
Ответ на: комментарий от AITap

cp1251, полагаю. ВК в ней возвращает, вроде

morpheus
() автор топика

Плохому танцору язык мешает

record ★★★★★
()
Ответ на: комментарий от anonymous

И чем getBytes или что там у них отличается от encode/decode ?

zz ★★★★
()
Ответ на: комментарий от anonymous

4.2 же! Недавно тред был где у чела проблемы с юникодом.
Да и сам сталкивался.

kovrik ★★★★★
()
Ответ на: комментарий от anonymous

Шел 2012 год. В питоне всё боролись в юникодом.

В тройке сделали всё по феншую наконец. Не сказать, что не поздно, но всё-таки уже сделали. Да и во второй версии уже было всё необходимое для нормальной жизни, только синтаксис совращал невинные души к использованию неправильного str для текста.

const86 ★★★★★
()
Ответ на: комментарий от Begemoth

А можно натуральный юзкейз где тебе приходит бинарный файл, кусок которого юникод и чтобы это было как то я хз как вы хотите в 2012 году.

zz ★★★★
()
Ответ на: комментарий от zz

Сами со сломанным парсером ходите, так еще и другим решили его сломать?

buddhist ★★★★★
()
Ответ на: комментарий от morpheus

видимо неправильно ман читал

Хорош врать - как будто ты их когда-нибудь читал

anonymous
()
Ответ на: комментарий от tensai_cirno

4.2 хипстеры пользуются руби, поэтому они там быстро на 1.9 перескочили

Virtuos86 ★★★★★
()
Ответ на: комментарий от Virtuos86

В питоне всё боролись с дураками.

Ну, поборют (сами себя), кто ж тогда на питоне будет «программить»

anonymous
()

Так это такой русский язык, или, простите, питон?

sin_a ★★★★★
()

:D

необходимо использовать русский язык (у строк), но когда строка русская, то происходит проблема

Попробуй использовать болгарский или украинский язык.

djambeyshik ★★★★★
()
Ответ на: комментарий от anonymous

Шел 2012 год. В питоне всё боролись в юникодом.

:)

Karapuz ★★★★★
()
Ответ на: комментарий от zz

Есть вот конфиг одной софтины. Часть кириллицы в чайлдпрон1251, часть (новые записи) в утф-8. В морде к конфигу костыль даже приделан (те куски, где утф имеют префикс UTF). Давай жабский рецепт чтения.

GateKeeper ★★
()
Ответ на: комментарий от GateKeeper

Я не жавалюб, самому хочется на чтото подобное посмотреть.

zz ★★★★
()

#*@*!ый русский язык

Забей на этот убогий недоязычок.

anonymous
()
Ответ на: комментарий от malbolge

http://python3wos.appspot.com/ вестимо, но я думаю остальные подтянуться за джангой и 3.3 тоже выглядит хорошим релизом для перехода на тройку.

zz ★★★★
()

#*@*!ый питон

очевидный же фикс. Русский язык вполне себе нормальный.

JFreeM ★★★☆
()

а вообще да, шел 21 век, а питон до сих пор не научился работать с юникодом нативно.

JFreeM ★★★☆
()

text = text.encode('UTF-8')

объясни себе две вещи:

1 в каком виде в функцию приходит text

2 зачем ты енкодишь его в утф8

redixin ★★★★
()

Ъ не пользуются ничем, кроме ASCII-7.

mix_mix ★★★★★
()

Это не #*@*!ый русский язык, это питон дебил.

false ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.