Вверх ↑
Этот топик читают: Гость
Ответов: 113
Рейтинг: 1
#1: 2019-10-30 13:42:48 ЛС | профиль | цитата
как исправить такое - при выгрузке в базу данных на mysql, меняется кодировка текста (кирилица) на другую. Определяется как windows-1252.
скрин phpmyadmin

программа

Add(MainForm,2953706,21,105)
{
Width=992
Height=647
}
Add(ChildGroupBox,4598318,224,91)
{
}
BEGIN_SDK
Add(EditMulti,14057873,21,21)
{
WorkCount=2
link(doWork1,14271777:doReset,[(42,27)(42,62)])
link(doWork2,14271777:doOn,[(42,34)(42,69)])
}
Add(GroupBox,12146096,140,49)
{
Top=5
Width=280
Height=600
Caption="Картриджи"
Point(doVisible)
}
Add(MTStrTbl,7426073,105,105)
{
Left=7
Top=15
Width=266
Height=578
}
Add(Switch,14271777,63,49)
{
DataOn=Integer(1)
DataOff=Integer(0)
Point(doOn)
link(onSwitch,12146096:doVisible,[])
}
END_SDK
Add(ChildGroupBox,12049141,224,147)
{
}
BEGIN_SDK
Add(EditMulti,16717403,21,21)
{
WorkCount=2
link(doWork1,13054805:doReset,[(39,27)(39,62)])
link(doWork2,13054805:doOn,[(39,34)(39,69)])
}
Add(GroupBox,2147692,126,49)
{
Top=5
Width=280
Height=600
Visible=1
Caption="Принтеры"
Point(doVisible)
}
Add(Switch,13054805,56,49)
{
DataOn=Integer(1)
DataOff=Integer(0)
Point(doOn)
link(onSwitch,2147692:doVisible,[])
}
Add(TreeViewTrain,15694900,126,112)
{
Left=7
Top=15
Width=266
Height=578
}
END_SDK
Add(Button,13340490,105,98)
{
Left=290
Top=10
Width=70
Caption="Картриджи"
link(onClick,3208490:doEvent1,[])
}
Add(Button,13530501,105,154)
{
Left=290
Top=30
Width=70
Caption="Принтеры"
link(onClick,9638706:doEvent1,[])
}
Add(Hub,9638706,154,154)
{
link(onEvent1,12049141:doWork2,[])
link(onEvent2,4598318:doWork1,[(187,167)(187,97)])
}
Add(Hub,3208490,154,98)
{
link(onEvent1,4598318:doWork2,[])
link(onEvent2,12049141:doWork1,[(196,111)(196,153)])
}
Add(ChildGroupBox,16067797,378,133)
{
link(onEvent1,11644156:doOpen,[])
}
BEGIN_SDK
Add(EditMulti,10781036,21,21)
{
EventCount=1
WorkCount=1
Width=909
Height=823
link(doWork1,2492645:doWork2,[(210,27)(210,132)])
}
Add(GroupBox,12948888,49,49)
{
Left=285
Top=60
Width=690
Height=545
}
Add(Memo,3324290,672,126)
{
Left=25
Top=40
Width=250
Height=360
ScrollBars=2
}
Add(Button,377589,406,56)
{
Left=25
Top=415
Caption="open"
link(onClick,10781036:onEvent1,[(656,62)(656,27)])
}
Add(Edit,14628949,266,238)
{
Left=30
Top=445
Width=510
}
Add(Button,815593,217,280)
{
Left=545
Top=445
Caption="ok"
link(onClick,4787026:doQuery,[])
}
Add(DSC_Query,4787026,266,280)
{
DSManager="parent.mysql"
link(onQuery,2611857:doWork2,[])
link(onError,633177:doWork2,[])
link(SQL,14628949:Text,[])
}
Add(DSC_Exec,293364,609,693)
{
DSManager="parent.mysql"
link(onExec,1447425:doText,[(674,699)(674,657)])
link(onError,11963963:doWork3,[(680,706)])
link(SQL,9407871:Text,[(615,626)(685,626)])
}
Add(DSC_QueryScalar,9707780,749,392)
{
DSManager="parent.mysql"
}
Add(HubEx,2492645,336,126)
{
link(onEvent,12740012:doWork2,[])
}
Add(HubEx,2611857,336,280)
{
Angle=3
link(onEvent,2492645:doWork3,[])
}
Add(StrList,5379007,245,504)
{
link(FileName,6928035:Value,[])
}
Add(Button,5776840,56,441)
{
Left=25
Top=490
Caption="import"
link(onClick,7853228:doExecute,[])
}
Add(ODialog,7853228,112,441)
{
Filter="csv|*.csv"
link(onExecute,8685065:doEvent1,[])
}
Add(Memory,6928035,252,441)
{
}
Add(Hub,8685065,175,441)
{
OutCount=3
link(onEvent1,6928035:doValue,[])
link(onEvent2,5379007:doLoad,[(217,454)(217,538)])
link(onEvent3,7047234:doEvent1,[(201,461)(201,513)(121,513)(121,566)])
}
Add(Button,13408075,525,693)
{
Left=100
Top=490
link(onClick,293364:doExec,[])
}
Add(Hub,7047234,133,560)
{
OutCount=3
link(onEvent1,3324290:doClear,[(184,566)(184,139)])
link(onEvent2,4039054:doClear,[])
link(onEvent3,3337998:doString,[])
}
Add(Replace,10223302,294,574)
{
SubStr=";"
DestStr="",""
link(onReplace,8885654:doReplace,[])
}
Add(Replace,8885654,336,574)
{
SubStr="\r\n"
DestStr=""),(""
link(onReplace,5391192:doReplace,[])
}
Add(FormatStr,3337998,245,574)
{
Mask="INSERT INTO `cartg`( `Numb`, `Name`, `State`, `Resurs`) VALUES ("%1")"
link(onFString,10223302:doReplace,[])
link(Str1,5379007:Text,[])
}
Add(Replace,5391192,378,574)
{
SubStr=",("")"
DestStr=";"
link(onReplace,3513330:doEvent1,[])
}
Add(StrList,4039054,609,560)
{
}
Add(HubEx,12740012,357,126)
{
link(onEvent,15888846:doWork2,[])
}
Add(VisualStrings,1447425,707,651)
{
Lines=#2:ok|
Point(doText)
Point(onText)
link(onText,11963963:doWork1,[(751,657)(751,608)])
}
Add(HubEx,11963963,676,602)
{
Angle=3
link(onEvent,12740012:doWork3,[(680,454)(680,454)(680,454)(361,454)])
}
Add(Button,10136095,217,343)
{
Left=130
Top=415
Width=90
Caption="select id=1"
link(onClick,6002224:doQuery,[])
}
Add(DSC_Query,6002224,266,343)
{
SQL="SELECT `State` FROM `cartg` WHERE `id`=1"
DSManager="parent.mysql"
link(onQuery,14986060:doWork2,[])
link(onError,14986060:doWork3,[(340,363)])
}
Add(HubEx,633177,336,294)
{
Angle=3
link(onEvent,2611857:doWork3,[])
}
Add(HubEx,14986060,336,343)
{
Angle=3
link(onEvent,633177:doWork3,[])
}
Add(ODialog,4003406,112,154)
{
Filter="|*.*"
FileName=""
Point(doStartDir)
link(onExecute,11747638:doEvent1,[])
}
Add(Button,3309264,28,147)
{
Left=260
Top=495
Caption="load"
link(onClick,4407680:doEvent1,[])
}
Add(Hub,11747638,399,154)
{
OutCount=5
link(onEvent1,3896326:doValue,[])
link(onEvent2,9177779:doLoad,[(427,167)(427,237)])
link(onEvent5,5679693:doData,[(431,188)(431,293)])
}
Add(Memory,3896326,455,154)
{
}
Add(Hub,3513330,462,574)
{
link(onEvent2,2345898:doEvent1,[(488,587)(488,611)(233,611)(233,636)])
}
Add(Charset,14131381,441,371)
{
Type=8
CodePage1=1252
CodePage2=1251
}
Add(StrList,9177779,448,203)
{
link(FileName,3896326:Value,[])
}
Add(HubEx,15888846,616,126)
{
link(onEvent,3324290:doAdd,[])
}
Add(Dir,5943048,112,56)
{
}
Add(DoData,13488558,112,105)
{
link(onEventData,4003406:doStartDir,[(157,111)(157,210)(100,210)(100,167)])
link(Data,5943048:CurrentDir,[])
}
Add(Hub,4407680,70,147)
{
link(onEvent1,13488558:doData,[(98,153)(98,111)])
link(onEvent2,4003406:doExecute,[])
}
Add(RichEdit,9407871,679,301)
{
Left=300
Top=50
Width=230
Height=335
}
Add(Hub,8091532,602,294)
{
link(onEvent1,15888846:doWork3,[(620,300)])
link(onEvent2,3886953:doWork2,[])
}
Add(Button,4735595,840,490)
{
Left=575
Top=300
Caption="save"
Data=String(D:\cc.txt)
}
Add(StrList,9916293,546,203)
{
FileName="D:\cc.txt"
}
Add(Hub,12876206,490,287)
{
link(onEvent1,9916293:doAdd,[(525,293)(525,209)])
link(onEvent2,5793106:doData,[])
}
Add(DoData,5679693,448,287)
{
link(onEventData,12876206:doEvent1,[])
link(Data,9177779:Text,[])
}
Add(DoData,5793106,546,294)
{
link(onEventData,8091532:doEvent1,[])
link(Data,9916293:Text,[])
}
Add(Hub,2345898,245,630)
{
OutCount=5
link(onEvent1,415764:doValue,[])
link(onEvent5,16060020:doData,[(277,664)(277,769)])
}
Add(StrList,13436708,392,679)
{
FileName="D:\cc.txt"
}
Add(Hub,13275764,336,763)
{
link(onEvent1,13436708:doAdd,[(371,769)(371,685)])
link(onEvent2,4398009:doData,[])
}
Add(DoData,16060020,294,763)
{
link(onEventData,13275764:doEvent1,[])
link(Data,415764:Value,[])
}
Add(DoData,4398009,392,770)
{
link(onEventData,7378021:doEvent1,[(516,776)(516,531)])
link(Data,13436708:Text,[])
}
Add(Hub,7378021,539,525)
{
link(onEvent1,4039054:doAdd,[(581,531)(581,566)])
link(onEvent2,3886953:doWork3,[(648,538)])
}
Add(HubEx,3886953,644,301)
{
link(onEvent,9407871:doAdd,[])
}
Add(Memory,415764,294,630)
{
}
END_SDK
Add(DS_MySQL,11644156,434,133)
{
Name="mysql"
Server="10.100.101.6"
Username="UserPrint"
Password="UserPrint123"
DBName="printsrv"
link(onOpen,15493575:doText,[(478,139)(478,118)])
link(onError,165240:doWork,[])
}
Add(VisualStrings,15493575,490,112)
{
Lines=#7:connect|
Width=123
Point(onText)
Point(doText)
link(onText,14192055:doWork2,[])
}
Add(Check,165240,492,140)
{
link(onEvent,14192055:doWork3,[(648,146)])
}
Add(HubEx,14192055,644,112)
{
Angle=3
link(onEvent,16067797:doWork1,[(648,82)(368,82)(368,139)])
}



Загружаю в программу файл *.csv с разделителями, сам текстовый файл в windows кодировке, в Memo открывается нормально.

https://forum.hiasm.com/getfile/38772

Редактировалось 5 раз(а), последний 2019-10-30 13:54:40
карма: 0
well done turner
0
Главный модератор
Ответов: 2999
Рейтинг: 396
#2: 2019-10-30 14:33:22 ЛС | профиль | цитата
Если хотите чтобы было красиво, то выгружайте текст в базу данных, созданную с "правильным" COLLATE. Изменить это нельзя после создания базы, можно только создать новую и перелить в неё все данные из старой.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 1926
Рейтинг: 172
#3: 2019-10-31 01:22:19 ЛС | профиль | цитата
Мини-ликбез:
До версии 4.1 кодировку можно было задать только для всего сервера, а начиная с версии 4.1 разработчики добавили возможность определения кодировки на разных уровнях иерархии СУБД (для всего сервера, БД, таблиц, столбцов).

CHARACTER SET — кодировка (utf8, cp1251...).

COLLATION — способ упорядочивать и сравнивать данные в БД.
cp1251_general_ci — регистронезависимое сравнение (А = а)
cp1251_bin — регистрозависимое сравнение (просто по номерам байт)
cp1251_general_cs — регистрозависимое (учитывает совп. символы - е/ё, ставит на место символы, к-е в кодировке не по порядку - ё)


Задание при создании:
Для БД: CREATE DATABASE dbname DEFAULT CHARSET cp1251 COLLATE cp1251_bin
Для таблиц: TABLE tblname ( col INT ) DEFAULT CHARSET cp1251 COLLATE cp1251_bin
Для столбцов: col1 char(255), col2 char(255) CHARSET cp1251 COLLATE cp1251_general_ci
Узнать кодировку: SHOW CREATE TABLE tblname.


Задание в программе после подключения к серверу:
SET character_set_client='cp1251' - в какой кодировке поступают данные от программы
SET character_set_connection='cp1251' - как перекодировать данные от программы до выполнения запроса
SET character_set_results='cp1251' - как перекодировать результат
SET collation_connection='cp1251_general_ci' - как сравнивать строки в запросах
Первые три оператора можно заменить SET NAMES 'cp1251'.


Например, у меня БД в utf-8, но в программе используется cp1251. Соотв., используем такой блок:

Add(MultiElementEx,1639716,161,98)
{
@Hint=#9:Кодировки|
}
BEGIN_SDK
Add(EditMultiEx,12685777,21,21)
{
WorkCount=#6:doExec|
EventCount=#6:onExec|
link(doExec,16337394:doExec,[(56,27)(56,76)])
}
Add(DSC_Exec,16337394,91,70)
{
@Hint=#47:в какой кодировке поступают данные от программы|
SQL="SET character_set_client='cp1251'"
DSManager="parent.parent.123"
link(onExec,4275828:doExec,[])
}
Add(DSC_Exec,4275828,140,70)
{
@Hint=#59:преобразовать данные от программы перед выполнением запроса|
SQL="SET character_set_connection='utf8'"
DSManager="parent.parent.123"
link(onExec,2492556:doExec,[])
}
Add(DSC_Exec,2492556,189,70)
{
@Hint=#42:в какую кодировку перекодировать результат|
SQL="SET character_set_results='cp1251'"
DSManager="parent.parent.123"
link(onExec,12685777:onExec,[(271,76)(271,27)])
}
END_SDK
Как приятно, когда появляются вопросы, которыми сам только что занимался и знаешь ответ.
карма: 9
1
Голосовали:powerbatman
Ответов: 113
Рейтинг: 1
#4: 2019-10-31 12:25:09 ЛС | профиль | цитата
powerbatman писал(а):
3042

действительно интересный способ !) , у меня все получилось!
Ashampoo_Snap_31 октября 2019 г._12h36m05s_001_.png
, спасибо ! буду применять )А то хотел уже пересоздавать базу данных.
Nic писал(а):
о выгружайте текст в базу данных, созданную с "правильным" COLLATE.
, теперь понял, при создании буду иметь ввиду

Редактировалось 1 раз(а), последний 2019-10-31 12:37:30
карма: 0
well done turner
0
4
Сообщение
...
Прикрепленные файлы
(файлы не залиты)