Search  
Friday, May 25, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Client/Server  Diacritice ... ...
 Diacritice ... VFP - MySQL
 
 3/10/2009 10:03:08 PM
User is offlineDragos
62 posts


Diacritice ... VFP - MySQL
 (N/A)
Salut tuturor! Am o problema in ceea ce priveste diacriticele pe MySQL. Am setat campul emitent UTF8_ROMANIAN in mysql, iar acesta se actualizeaza printr-un view din vfp. In form-ul din VFP imi apare corect orice string care contine diacritice in campul mentionat. In tabela mysql imi apar doat carcterele Î si Â, restul Ă,Ţ,Ş imi apar doar ca Þ, ª, Ã. In VFP sunt pe charset= CentralEuropean. Nu stiu care este problema. Daca introduc date direct in mysql se salveaza corect, in schimb in VFP imi apare aiurea. As vrea sa stiu daca este o problema de MySQL sau de vfp si cum ar trebui setate pentru a introduce, vizualiza (rapoarte vfp) si cauta date care contin diacritice (front vfp; back mysql). Multumesc.
 3/10/2009 11:21:55 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Diacritice ... VFP - MySQL
 (N/A)
VFP lucreaza doar cu caractere single-byte si localeID (chiar daca are functii pentru double-byte).
Conversia de la single-byte la UTF8 se face astfel:
expresie_utf8=STRCONV(STRCONV(expresie_sb,1),9)
Conversia UTF8 la single-byte :
expresie_sb=STRCONV(STRCONV(expresie_utf8,11),2)


Daniel Buduru
 3/11/2009 1:41:38 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Diacritice ... VFP - MySQL
 (Romania) Modified By Grigore Dolghin  on 3/11/2009 2:47:15 AM)

E destul de spinoasa problema asta. In esenta, caracterele pe care le introduci direct in MySQL (banuiesc ca folosesti un utilitar oarecare) sunt stocate pe doi octeti. VFP-ul nu stie sa reprezinte nativ acesti doi octeti ca pe un caracter cu diacritice, ci functioneaza cu CodePage. Pagina asta de coduri inlocuieste caracterele cu ASC() > 128 cu un alt set de semne (printre care se afla ş si ţ). Dar important pentru tine este sa stii ca pentru a afisa un caracter cu diacritice in VFP trebuie musai sa incarci pagina aia de coduri. Din mesaj imi dau seama ca ai facut-o deja, folosind CharSet=238. In cazul asta litera cu codul ascii 254, care in mod normal este þ este "desenata" ca fiind ţ. Dar in realitate e acelasi cod ascii, doar aspectul caracterului se schimba.

Daniel ti-a dat functiile de conversie din utf8 in single byte si invers. Astea functioneaza foarte bine cand manipulezi stringuri, de exemplu, dar daca vrei sa pui campul din cursorul rezultat drept .ControlSource la un textbox, ai o problema: nu poti folosi functiile alea :) Singura solutie e sa lucrezi cu .Value: ThisForm.Textbox.Value = StrConv(blah blah) si, respectiv, Replace Camp With strconv(ThisForm.textbox.Value). E mai mare daraua decat ocaua.

Sugestia mea ar fi sa nu folosesti alt utilitar pentru a introduce date "direct in MySQL", ci fa-ti propriul utilitar pentru introdus date, in VFP, pentru ca vrei-nu vrei, in MySQL trebuie sa ajunga CHR(254) ca sa vezi ţ in VFP. Daca introduci orice altceva (si folosind utilitarul, apasarea tastei ţ are ca efect introducerea octetilor 021B) vei vedea patratele in VFP (repet, daca nu folosesti functiile alea de conversie. Daca le folosesti, vezi corect, da' nu mai poti folosi .ControlSource)


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 3/11/2009 6:25:24 PM
User is offlineDragos
62 posts


Re: Diacritice ... VFP - MySQL
 (N/A) Modified By Dragos  on 3/11/2009 7:47:40 PM)
M-am luminat. Mersi mult si lui Grigore si lui Daniel. Cred ca voi face in modul urmator: in mysql voi seta campul in care se vor introduce diacritice in UTF8-romanian ceea ce-mi permite in vfp sa introduc diacritice si nu-mi da peste mana mysql-ul; in VFP voi folosi controale cu 238 charset atat in formuri cat si in rapoarte si voi introduce datele doar din vfp cum a zis Grogore. In felul asta voi vizualiza/incarca (form) sau previzualiza/printa (rapoarte) date cu diacritice in mod corect din vfp chir daca in mysql pentru ţ,ş imi vor aparea "semnele" respective. Cred ca voi avea probleme si mai mult de scris pe partea de cautare, dar asta e. Bafta multa.
 3/12/2009 8:50:47 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: Diacritice ... VFP - MySQL
 (N/A)
Nu lucrez cu My Sql, dar nu cred ca vei avea probleme la cautare. Conversia ANSI - UNICODE se face, de regula, in driverul ODBC.
Pe de alta parte, daca baza de date este utilizata doar din VFP, nu cred ca este necesar sa definesti campurile UTF8, poti lucra foarte bine cu campuri caracter single-byte.
Gasesti aici mai multe despre asta:
http://www.programmersheaven.com/2/using-unicode-in-visual-foxpro

Daniel Buduru
 11/5/2009 11:53:10 PM
User is offlineMaciFla
17 posts


Re: Diacritice ... VFP - MySQL
 (Romania)

Sper ca problema lui Dragos s-a rezolvat de mult,dar postez tot aici pentru ca acopera aproximativ aceeasi problema - diacriticele.

Din VFP9 cu SYS(3101 ,1250) prin ODBC "Driver={MySQL ODBC 5.1 Driver};" ....."Option=16899;" ,actualizez intr-o baza MySql 5.0.5. un tabel codificat utf8_general_ci.

Problema mea e ca, desi in formularul VFP, la incarcarea datelor, diacriticele apar Ok, salvate in MySql (prin SQL Pass-Through) apar Ok (adica se vad tot diacritice), atunci cand readuc in VFP datele din MySql (ulterior), acestea sunt inlocuite pe formular cu ???.

Am incercat cu diferite codificari in MySql, dar nici o varianta nu a iesit Ok. Nu ma intereseaza in mod deosebit sa se vada bine in MySql, deocamdata accesand datele doar prin aplicatia VFP.

Apreciez orice sugestie,

Flaviu Maci

 

 11/6/2009 8:01:39 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Diacritice ... VFP - MySQL
 (N/A)
Te complici. Renunta la panarama aia de SYS. Culege datele in textbox-uri cu charset=238, trimite-le catre mysql asa cum sunt, tabela din mysql las-o asa cum e de la mama ei (adica Character Set latin1Collate latin1_swedish_ci;) si gata. In vfp o sa vezi ş, in mysql, daca te uiti in tabela, o sa vezi º, si cand le aduci inapoi in VFP o sa vezi din nou ş.

Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 11/6/2009 9:48:41 AM
User is offlineDaniel Buduru
2335 posts
1st




Re: Diacritice ... VFP - MySQL
 (N/A)
 MaciFla wroteDin VFP9 cu SYS(3101 ,1250) prin ODBC "Driver={MySQL ODBC 5.1 Driver};" ....."Option=16899;" ,actualizez intr-o baza MySql 5.0.5. un tabel codificat utf8_general_ci.


SYS(3101) seteaza codul de pagina implicit pentru operatiile de interoperabilitate COM, si nu are efect asupra unei conexiuni ODBC. Se poate folosi doar cu ADO, care prezinta o interfata COM.


Daniel Buduru
 11/6/2009 11:07:48 AM
User is offlineMaciFla
17 posts


Re: Diacritice ... VFP - MySQL
 (Romania)

 Grigore Dolghin wrote
Te complici. Renunta la panarama aia de SYS. Culege datele in textbox-uri cu charset=238, trimite-le catre mysql asa cum sunt, tabela din mysql las-o asa cum e de la mama ei (adica Character Set latin1Collate latin1_swedish_ci;) si gata. In vfp o sa vezi ş, in mysql, daca te uiti in tabela, o sa vezi º, si cand le aduci inapoi in VFP o sa vezi din nou ş.

Am scos SYS(3101 ,1250) , ca oricum se pare ca nu ma ajuta. La textbox-uri si alte controale am pus fontcharset=238-Central European (Era 1 Central European - deci nu cred sa aiba vre-o influenta, cel putin la mine, unde asta era prestabilit). Oricum, e bine sa fie pusa explicit. Am restabilit in MySql codificarea la nivel de client,conexiune,database, tabel si coloana in latin1 cu colation latin1_swedish_ci si ...

Acum nu mi se nu se mai vad dicriticele corect in MySql (ceea ce nu ar fi mare paguba), dar din pacate nici in VFP cand le aduc din nou nu se vad Ok. Evident, am incercat cu ceva date proaspete, sa elimin posibilele probleme venite odata cu modificarile character_set-urilor din MySql.

Poate fi vre-o setare de sistem (Windows Xp Sp2) care sa influenteze asta. Am Romanian la Language for non-unicode programs.

Multumesc,

Flaviu Maci

 11/6/2009 11:50:55 AM
User is offlineGrigore Dolghin
3590 posts
www.class-software.eu
1st






Re: Diacritice ... VFP - MySQL
 (N/A)

Nu stiu ce sa-ti spun mai mult. O sa reiterez faptul ca daca în mysql ai caracterul þ, in vfp se vede ţ daca ai setat fontcharset=238 pentru controlul respectiv. (Apropo, fontcharset=1 inseamna "foloseste charsetul implicit al sistemului de operare". Daca tu ai setat Romanian in language for non-unicode programs, se vede corect, dar pe alt calculator nu. Seteaza 238 explicit.


Grigore Dolghin
Visual FoxPro MVP 2006 - 2010
Class Software
My blog
 11/6/2009 12:11:22 PM
User is offlineDaniel Buduru
2335 posts
1st




Re: Diacritice ... VFP - MySQL
 (N/A)
ODBC face automat conversia la codul de pagina al sistemului de pe care se executa interogarea. Atat la campuri UTF, cat si la campuri caracter.
Setarea pentru conversia implicita,  in XP,  se face din Control Panel, Regional Setting, Advanced.
Sistemul e setat implicit pe English (United States).
In aceasta situatie, daca tabela e configurata pe Latin1 general, diacriticele scrise din vfp (cu  caracterset 238)  in campuri caracter se citesc corect din vfp, dar nu arata corect pe server.


Daniel Buduru
 11/6/2009 1:09:04 PM
User is offlineMaciFla
17 posts


Re: Diacritice ... VFP - MySQL
 (Romania)

 Daniel Buduru wrote
ODBC face automat conversia la codul de pagina al sistemului de pe care se executa interogarea. Atat la campuri UTF, cat si la campuri caracter.
Setarea pentru conversia implicita,  in XP,  se face din Control Panel, Regional Setting, Advanced.
Sistemul e setat implicit pe English (United States).
In aceasta situatie, daca tabela e configurata pe Latin1 general, diacriticele scrise din vfp (cu  caracterset 238)  in campuri caracter se citesc corect din vfp, dar nu arata corect pe server.

Asta era, eu avem Romanian si odata pus English merge Ok.

Va multumesc (Grigore si Daniel) pentru lamuririle la obiect. O sa incerc si cu setarea charset a ODBC sa vad daca nu pot obtine o solutie independenta de setarea din Regional Settings.

  Visual FoxPro  Client/Server  Diacritice ... ...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement