convertire caractere in mac

cebel
membru
membru
Mesaje: 6
Membru din: 19 Iunie 2011 10:37

convertire caractere in mac

Mesaj de cebel »

Dezvolt o aplicatie pentru iphone si in baza de date sqlite am pus continut text cu caractere cu sedila,si surpriza a fost ca atunci cand cautam sa implementez functia de search,nu imi gasea caracterele cu ș si ț cu sedila .
M-am documentat si am ajuns la concluzia ca trebuie sa convertesc textul .

Intrebarea e : exista vreun program,chiar si pe windows care are aceasta facilitate sa converteasca caracterele cu sedila in caractere cu virgula ?

Tastatura pe iphone ca si cea pe mac suporta caracterele cu virgula,deci cele corecte pentru limba romana.

Bine ca nu am construit toata baza de date,ci numai un pic pentru proba.
dorin
membru
membru
Mesaje: 61
Membru din: 25 Ianuarie 2007 09:12
Localitate: București

Mesaj de dorin »

În Windows poți converti textul cu Notepad (Edit->Replace...).
cebel
membru
membru
Mesaje: 6
Membru din: 19 Iunie 2011 10:37

Mesaj de cebel »

Sa incerc sa vad daca o sa pot face asa,pentru asta trebuie sa instalez windowsul.

Acum incerc pe microsoft office de mac si am reusit sa schimb doar o litera,eu as vrea sa gasesc daca are pentru tot textul.

Trebuie sa aibe aceasta facilitate,cumva se razbuna word-ul pe mine :)),ca nu mi-a placut niciodata sa lucrez cu text.

Multumesc .
dorin
membru
membru
Mesaje: 61
Membru din: 25 Ianuarie 2007 09:12
Localitate: București

Mesaj de dorin »

Atunci am o veste bună: în Microsoft Word (din MS Office pentru Windows) poți schimba "dintr-o lovitură" toate caracterele pe care le dorești (adică să dai o singură comandă și să se execute toate substituțiile pe care le dorești), dar pentru asta trebuie să folosești o macrocomandă.

S-a mai discutat asta aici.
cebel
membru
membru
Mesaje: 6
Membru din: 19 Iunie 2011 10:37

Mesaj de cebel »

Stii ce am realizat?Ca MS Office pentru Macintosh are macrocomanda asta inclusa , merge cu "replace all" analizeaza tot textul si schimba caracterul cu pricina cu unul pe care il vreau eu.

Sper sa nu imi dea emotii,vad ca ii dau de exemplu sa schimbe in text caracterul ,schimba si pe cele mari si pe cele mici,din aceeasi comanda unica,in text le lasa cum sunt ele mari sau mici.
Sa nu am probleme ca aceeasi litera din aceeasi familie,are coduri diferite pentru mare sau mica.
dorin
membru
membru
Mesaje: 61
Membru din: 25 Ianuarie 2007 09:12
Localitate: București

Mesaj de dorin »

Și Office pentru Windows are comanda Replace all, care analizează tot textul, nu despre asta era vorba.

Ideea era de a defini o macrocomandă care să facă "dintr-o singură trecere" toate substituțiile.

Să zicem că macrocomanda se numește "înlocuire caractere cu sedilă", și are asociat un buton. La apăsarea pe acel buton, se vor face dintr-o dată, în tot textul, toate substituțiile, adică:
  • ş->ș
    ţ->ț
    Ş->Ș
    Ţ->Ț
    etc...
Adică ai deschis textul în Word, ai apăsat butonul o singură dată și s-a corectat tot textul (toate caracterele cu sedilă au fost înlocuite cu caractere cu virgulă).
Am dat un exemplu de o asemenea macrocomandă în mesajul anterior.
cebel
membru
membru
Mesaje: 6
Membru din: 19 Iunie 2011 10:37

Mesaj de cebel »

Exact ce spuneam aia se intampla:

wordul le face ,schimba si mare si mic dintr-o comanda si la cautare in baza de date ,e case sensitive,gaseste numai mare sau numai mic ....pffff. Fonturile romanesti sunt praf,prost implementate sau deloc.

Engine-ul de sqlite are implementat unicode UTF-8,dar nu stiu ce sa mai zic.

Da ai dreptate.

Si daca pui macrocomanda ,le schimba mari cu mari si mici cu mici,nu?
nu ca wordul care le ia la gramada,pun sa schimbe una mica si le schimba si pe cele mari

Multumesc.
dorin
membru
membru
Mesaje: 61
Membru din: 25 Ianuarie 2007 09:12
Localitate: București

Mesaj de dorin »

cebel a scris:wordul le face ,schimba si mare si mic dintr-o comanda

[...] wordul care le ia la gramada,pun sa schimbe una mica si le schimba si pe cele mari
Asta se întîmplă dacă nu ai opțiunea respectivă bifată (în Word: Găsire și înlocuire->Înlocuire->Potrivire litere mari și mici)
cebel a scris:Si daca pui macrocomanda ,le schimba mari cu mari si mici cu mici,nu?
Normal, pentru că au coduri diferite:

Ş - U+015E
ş - U+015F
Ţ - U+0162
ţ - U+0163
Ș - U+0218
ș - U+0219
Ț - U+021A
ț - U+021B

Dacă o să citești mai atent codul macrocomenzii pe care am pus-o mai sus, o să-ți dai seama - se vede clar care sînt instrucțiunile.

Ideea cu macrocomanda era următoarea (nu știu dacă s-a înțeles): spre deosebire de "Căutare și înlocuire" (unde trebuie să îi dai pe rînd, caracter cu caracter, caracterele pe care vrei să le înlocuiești (Ş, ş, Ţ, ţ) și se fac mai multe treceri prin document), cînd folosești macrocomanda apeși o singură dată butonul asociat și se fac toate înlocuirile (face toată treba "dintr-o dată"). Practic se întîmplă același lucru, dar pentru utilizator e mai comod de folosit (deschizi documentul, apeși butonul și... gata!).
cebel
membru
membru
Mesaje: 6
Membru din: 19 Iunie 2011 10:37

Mesaj de cebel »

Am instalat macrocomanda si pe microsoft office de mac si merge.

Vreau sa stiu exact ce inlocuieste ea cum e scrisa acum,pentru ca am text mult si nu am timp sa corectez,si pentru asta as avea nevoie de o idee.

De fapt ChrW(...),ce e?Banuiesc ca e o functie care intoarce un caracter in functie de codul sau ,si atunci ar trebui sa caut undeva pe net unde pune echivalenta.

Vreau sa fac ca macrocomanda sa transforme doar ĂÂÎŞŢ/ ăâîşţ cu ĂÂÎȘȚ/ăâîșț.

Desi ĂÂÎ/ăâî par ca sunt aceleasi in cele doua grupuri,totusi nu mi le gaseste la cautare.

E incantatoare macrocomanda,daca reusesc sa o pun la punct ma va scuti de ore intregi de munca,avind spre 40 de fisiere mari si ca sa dau la fiecare cate 10 comenzi ,as imbatrani.


Multumesc .
dorin
membru
membru
Mesaje: 61
Membru din: 25 Ianuarie 2007 09:12
Localitate: București

Mesaj de dorin »

Mă mir că mai merge, e scrisă acum zece ani, probabil pe un Word 97!... Era doar un exemplu, cam cum ar trebui făcută.

Așa cum era scrisă atunci, înlocuia caracterele românești mapate aiurea în fonturi gen Times, TimesRomanSF etc. (în care caracterele românești erau puse pe alte coduri decît trebuia, și decît erau în fonturile Times New Roman, Arial etc. - "oficiale"). Dar, atenție, le înlocuia cu caracterele romînești cu sedilă, nu cu virgulă dedesubt, care nici nu existau atunci.
Practic, înlocuirile pe care le făcea erau următoarele:

Ã->Ă
ª->Ş
Þ->Ţ
ã->ă
º->ş
þ->ţ


Caracterele ciudate din stînga ar fi apărut bine pe fonturile alea care nu se mai folosesc (Times, etc.), dar pe Times New Roman apăreau aiurea, de aia trebuia făcută substituția.

Deci ție nu îți este de folos cu codurile alea, trebuie să le modifici (cu cele date de mine în mesajul anterior - doar să transformi din Hex în Dec, pentru că argumentul funcției Chr trebuie să fie Dec).

Descrierea funcției Chr() o găsești în Help-ul Wordului (mai exact Help-ul pentru Microsoft Visual Basic for Word):
Chr Function

Returns a String containing the character associated with the specified character code.

Syntax

Chr(charcode)

The required charcode argument is a Long that identifies a character.

Remarks

Numbers from 0 – 31 are the same as standard, nonprintable ASCII codes. For example, Chr(10) returns a linefeed character. The normal range for charcode is 0 – 255. However, on DBCS systems, the actual range for charcode is -32768 to 65535.

Note The ChrB function is used with byte data contained in a String. Instead of returning a character, which may be one or two bytes, ChrB always returns a single byte. The ChrW function returns a String containing the Unicode character except on platforms where Unicode is not supported, in which case, the behavior is identical to the Chr function.

Note Visual Basic for the Macintosh does not support Unicode strings. Therefore, ChrW(n) cannot return all Unicode characters for n values in the range of 128 – 65,535, as it does in the Windows environment. Instead, ChrW(n) attempts a "best guess" for Unicode values n greater than 127. Therefore, you should not use ChrW in the Macintosh environment.
Atenție la folosirea funcției ChrW() pe Mac (vezi ultimul paragraf din citatul de mai sus). Bine, citatul e din Help-ul unui Word 2002, nu am altul la îndemînă acum, s-ar putea ca între timp să se mai fi schimbat lucrurile, vezi ce zice.

Înlocuirea propriu-zisă este realizată de secvențele de forma:

Cod: Selectați tot

With Selection.Find 
 .Text = ChrW(xxx) 
 .Replacement.Text = ChrW(yyy) 
  End With
După cum se vede, modificările sînt operate asupra textului selectat în prealabil, deci va trebui să selectezi tot textul (dai un Ctrl+A) înainte de a apela macrocomanda (sau selectezi numai textul în care vrei să caute).

Pentru Ă, ă, Î, î, Â, â nu ai nevoie de înlocuire, trebuie să înlocuiești doar Ș, ș, Ț, ț cu sedilă cu cele cu virgulă.
Avatar de utilizator
secarica
admin secarica.ro
admin secarica.ro
Mesaje: 256
Membru din: 06 Mai 2003 03:00
Localitate: București, Pământ
Contact:

Mesaj de secarica »

O soluție mai liberă decât a folosi MS Office pentru așa ceva este utilizarea componentei Writer de la suita LibreOffice, la care se adaugă extensia asta.

LibreOffice există și pentru Mac, deci asta nu ar fi o problemă. Nu știu cum funcționează instalarea extensiilor pe Mac, pe Windows deschid LO și arunc extensia peste program, restul face el (cu confirmare din partea mea).

Avantajul cu LibreOffice este și posibilitatea de a avea un dicționar bun (disponibil de aici), fără costuri și fără piraterii.

Apple are suport corect pentru limba română de ani buni. Mai degrabă problema apare invers, la nivel de font, dacă dintr-un motiv oarecare este nevoie să vezi pe Mac un fișier scris incorect (cu ş și ţ cu sedilă). De exemplu cred că fontul Verdana există și pe Mac și presupun că are de amândouă.

Cristi
... cea mai bună armă este adevărul – cu condiția să știi să-l folosești
cebel
membru
membru
Mesaje: 6
Membru din: 19 Iunie 2011 10:37

Mesaj de cebel »

Merge de minune ,e foarte bun.


In legatura cu faptul ca nu gaseste la cautare decat case sensitive pentru ĂÂÎ/ ăâî ,e de vina programul sqlite manager,managerul de sqlite din firefox gaseste,la fel si search-ul ms office.

Multumesc mult de ajutor.
Scrie un răspuns