andreykour
Ноя. 27, 2015 15:34:28
Коллеги!
Подскажите, есть mssql сервер, в нем табличка в которую нужно писать текст сграбленный из интернета, всё бы хорошо, только в базу почему то пишет “Р РўРЎ-тендер”, если я пишу хоть
str=“UPDATE z SET area = ‘”+rez.encode(“UTF8”)+“’ WHERE purchaseNumber='”+str(nzak)+“';”
хоть
str=“UPDATE z SET area = ‘”+rez.decode(“UTF8”)+“’ WHERE purchaseNumber='”+str(nzak)+“';”
ничего не помогает, в текстовый файл пишет изначально в нормальной кодировке… что делать??
py.user.next
Ноя. 27, 2015 16:43:09
>>> 'ТС-тендер'.encode('utf-8').decode('cp1251')
'ТС-тендер'
>>>
У тебя в базе кодировка cp1251.
andreykour
Ноя. 29, 2015 20:52:46
qe=rez.encode('utf-8').decode('cp1251')
UnicodeDecodeError: ‘ascii’ codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
не помогает(( я уже весь стэковерфлоу перерыл, что только не пробовал, не помогает…
выдает ошибку на этом преобразовании…
py.user.next
Ноя. 30, 2015 00:30:39
andreykour
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
У тебя в исходнике написан где-то русский текст, а декларация кодировки в файле не выставлена. К этим преобразованиям это не имеет отношения.
andreykour
Ноя. 30, 2015 08:26:49
да, я граблю русский текст, в начале файла у меня стоит
# coding: utf8
больше я нигде кодировок не касаюсь… может надо изначально определять кодировку не как utf8, а cp1251???
doza_and
Ноя. 30, 2015 08:34:42
andreykour
может надо изначально определять кодировку не как utf8, а cp1251???
Очень Очень плохая идея.
andreykour
Ноя. 30, 2015 08:51:26
хорошо, а что делать тогда??? у меня текст то не большой…
# coding: utf8
from sys import stdout
from bs4 import BeautifulSoup
import pypyodbc
import urllib2
cnxn = pypyodbc.connect('DSN=')
cursor = cnxn.cursor()
cursor.execute("SELECT pNumber FROM z;")
headers = {'User-Agent' : 'Mozilla 5.10'}
ustr=''
for nzak in cursor.fetchall():
url='http://zakupki.gov.ru/epz/order/notice/ea44/view/common-info.html?regNumber=' + (nzak[0])
try:
request = urllib2.Request(url, None, headers)
resp = urllib2.urlopen(request)
HTML = resp.read()
soup = BeautifulSoup(HTML, 'lxml')
table_cols = soup.find_all('tr')
for row in table_cols:
YY=str(row).rfind('Наименование электронной площадки в ', 0)
if YY>0:
rez=str(row)
GG=rez.rfind('<td>', 0)
rez=rez[GG+4:]
ustr="UPDATE z SET area = '"+rez.encode('utf-8').decode('cp1251')+"' WHERE pNumber='"+str(nzak[0])+"';"
updaters.execute(ustr)
cnxn.commit()
andreykour
Ноя. 30, 2015 11:02:09
нет? никто не подскажет куда надо cp1251 воткнуть???
py.user.next
Ноя. 30, 2015 12:21:15
andreykour
Перед этой строкой вставь
и скопируй сюда то, что выводится.
andreykour
Ноя. 30, 2015 12:51:14
я справился, спасибо большое!!!
оказалось, что BeautifulSoup изначально всё делает в utf8, я все части запроса отдельно указал, что utf8, склеил в одну строку, а потом сделал как вы выше писали qe=ustr.decode('utf8').encode('cp1251') и всё зафурыкало!