powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Нечитаемые символы при записи в MS SQL Server
3 сообщений из 3, страница 1 из 1
Нечитаемые символы при записи в MS SQL Server
    #40101046
Диана Орел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использую Jython
Читаю данные из текстового фала. Кодировка файла ANSI.

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
sc_dir = 'C:/TEMP/cl_script_TXT.txt'

flist = []
with open(sc_dir, 'r') as fd:
    flist = list(fd)
    print flist

print ''.join(flist)



вывод в консоль
['/* ACCOUNT */ "AC.RTO.33007"/*fact RTO*/, "SB.00231.\xcf\xe0\xf0\xe0\xec\xe5\xf2\xf0\xfb \xee\xe1\xfa\xe5\xea\xf2\xe0"']
/* ACCOUNT */ "AC.RTO.33007"/*fact RTO*/, "SB.00231.Параметры объекта"

то есть русские и английские буквы прочитались правильно, когда я из list сделала string
Далее, я записываю в таблицу БД эту строку программно. смотрю, что записалось в таблице, а там нечитаемые символы



Странно, когда текстом вставляю, то редактор правильно отображает. Вопрос: как он распознает кодировку?

/* ACCOUNT */ "AC.RTO.33007"/*fact RTO*/, "SB.00231.Ïàðàìåòðû îáúåêòà"

как исправить?? БД MS SQL Server 2015.
Когда получаю эти же данные из БД, они нечитабельные.
Записываю с помощью процедуры в SQL Server. В коде вызываю процедуру. Правда использую библиотеку стороннюю, но там ничего особенного:

Код: python
1.
2.
3.
4.
5.
sTxt = ''.join(flist)
sqlTxt = '{call UDA_MSSQL.DBO.ALTER_T_SCRIPE_TEXT(?,?,?,?,?)}'
params = [appname, rulname, locname, sc_type, sTxt]

fdmAPI.executePLSQL(sqlTxt, params, True)
...
Рейтинг: 0 / 0
Нечитаемые символы при записи в MS SQL Server
    #40101173
Диана Орел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
решила так:
В SQL Server как записывается, так пусть остается. Но когда считываю эту строку в другой части кода, то делаю encode и получаю свои русские символы.

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
strMy = ''
if resultSet.next():
      strMy = resultSet.getString(1)

if len(strMy) = 0:
      raise RaiseError("The string is empty")
strMy = strMy.encode("cp1252", "ignore")
print strMy


-----------------------
/* ACCOUNT */ "AC.RTO.33007"/*fact RTO*/, "SB.00231.Параметры объекта"
...
Рейтинг: 0 / 0
Нечитаемые символы при записи в MS SQL Server
    #40101615
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диана Орел
Кодировка файла ANSI.
В кодировке ANSI нет кириллицы. Вообще нет. Там только латинский алфавит.

Диана Орел

вывод в консоль
....
записываю в таблицу БД эту строку программно.
....
текстом вставляю, то редактор правильно отображает.
Подсказка: у тебя тут минимум три программы - БД, консоль, редактор. У них у всех может быть разная кодировка, а может и совпадать между какой-то из пар.

Диана Орел
Вопрос: как он распознает кодировку?
Вариантов два:
- В твоем файле есть тайные байтики (в самом начале файла) которые указывают кодировку и редактор эти байтики читает, но не показывает. Их можно увидеть в более глупом редакторе или в просмотре файла в hex режиме.
- Кодировка твоего файла совпадает с кодировкой редактора. Ты же в этом редакторе файл создавала? Вот и кажется что редактор распознает кодировку, когда на самом деле он просто показывает то что сам создал.

Диана Орел
как исправить??
Разобраться в каком месте какая кодировка. Переключить программу показывающую плохой текст в правильную кодировку или перед выводом в нее конвертировать текст.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Нечитаемые символы при записи в MS SQL Server
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]