Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum sterg mails din Promotions

Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Dupa 20 ani de facultate, am uita...
 Mobile.de ofera imprumut de bani ...

problema test grila

Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...
 Jante noi shitbox

Trinitas TV 4K

Dacia 1316 cu 6 usi ...

Frecventa modificata radio
 Un nou pericol pt batrani

Ar trebui sa vindem imobiliarele ...

Dupa renuntarea la aparat dentar

pelerinaj in Balcik
 

Ț-ul românesc și mysql

- - - - -
  • Please log in to reply
8 replies to this topic

#1
jimmyy

jimmyy

    Member

  • Grup: Members
  • Posts: 697
  • Înscris: 21.04.2008
Salut,

Am în baza de date mysql două feluri de ț, unul mai vechi și unul mai nou: țț  le-am lăsat unul lângă altul să puteți vedea diferența. Puteți să facți zoom in browser eu fac la 500% zoom și atunci se vede diferența la codița de sub t.

Vreau să selectez în mysql doar vechiul ț și nu pe noul ț.
Am schimbat collation din utf_general în utf_romanian_ci dar că selectez cu unul sau cu altul nu e nici o diferența, aceleași rezultate sunt întoarse. Select-ul îl fac cu like %ț% din PhpAdmin.

Cum să fac să selectez doar vechiul ț?

Am aceeași problemă pentru ș.

Vă mulțumesc
P.S. ca și curiozitate nu înțeleg de ce am două variante de ț, cred ca în trecut windows-ul XP îl encoda pe modul "vechi"

#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
Incearca o interogare in care specifici exact codul utf8 https://stackoverflo...nicode-literals

C5 A3 e vechiul ţ

#3
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

 jimmyy, on 16 martie 2019 - 10:20, said:

P.S. ca și curiozitate nu înțeleg de ce am două variante de ț, cred ca în trecut windows-ul XP îl encoda pe modul "vechi"
Unul e t cu sedila, altul e t cu virgula.

De ce? Pentru ca in anii 90 am trimis niste batrani mai batrani ca dinozaurii de la Academia Romana la Microsoft, ca sa le explice alora ce fel de t avem, si le-au explicat gresit.

Corect e t cu virgula, si asa inveti si in clasa I, deci ceea ce vrei sa faci e gresit.

Abordarea corecta e sa inlocuiesti toate aparitiile lui s si t cu sedila in variantele cu virgula, si la input sa faci collation (string replace) din cod.

Astfel, toti idiotii pot introduce orice vor, dar tu vei salva in baza de date varianta corecta.

Nu fa varianta gresita, fa ce ti-am zis, te scapa de alte probleme in alte parti.

#4
jimmyy

jimmyy

    Member

  • Grup: Members
  • Posts: 697
  • Înscris: 21.04.2008

 dani.user, on 16 martie 2019 - 10:25, said:

Incearca o interogare in care specifici exact codul utf8 https://stackoverflo...nicode-literals

C5 A3 e vechiul ţ

Mulțumesc frumos,
Am încercat dar îmi returnează rânduri care îl au pe noul ț
SELECT * FROM `tabela_cu_t` WHERE `field_cu_t` like concat('%', _utf8 x'C5A3' , '%');
Am greșit ceva?
Am verificat și tabela e pe collation utf_romanian_ci

 OriginalCopy, on 16 martie 2019 - 10:48, said:

Unul e t cu sedila, altul e t cu virgula.

De ce? Pentru ca in anii 90 am trimis niste batrani mai batrani ca dinozaurii de la Academia Romana la Microsoft, ca sa le explice alora ce fel de t avem, si le-au explicat gresit.

Corect e t cu virgula, si asa inveti si in clasa I, deci ceea ce vrei sa faci e gresit.

Abordarea corecta e sa inlocuiesti toate aparitiile lui s si t cu sedila in variantele cu virgula, si la input sa faci collation (string replace) din cod.

Astfel, toti idiotii pot introduce orice vor, dar tu vei salva in baza de date varianta corecta.

Nu fa varianta gresita, fa ce ti-am zis, te scapa de alte probleme in alte parti.

Da sunt de acord, dar am deja in baza de date si ț-ul vechi si cel nou, deci mai întâi trebuie să găsesc care sunt rândurile care îl conțin pe ț-ul vechi, și din mysql nu reușesc... apoi pot să-l înlocuiesc într-adevăr

Edited by jimmyy, 16 March 2019 - 10:54.


#5
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

 jimmyy, on 16 martie 2019 - 10:51, said:

Da sunt de acord, dar mai întâi trebuie să găsesc care sunt rândurile care îl conțin pe ț-ul vechi, și din mysql nu reușesc...
Poate randurile respective contin atat t-ul gresit (cu sedila), cat si t-ul corect (cu virgula).

Oricum nu ar trebui sa conteze, e suficient sa faci string replace o data pe toata baza de date, asa orbeste.

Backup inainte.

#6
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007

 jimmyy, on 16 martie 2019 - 10:51, said:

Am verificat și tabela e pe collation utf_romanian_ci

Collationul are reguli despre cum sa fie comparate valorile. Probabil acel utf_romanian_ci considera echivalente ț-urile si ti le gaseste mereu pe toate. Incearca un collation mai simplu, "mai prost".

Alta varianta e cum zice OriginalCopy, replace la gramada. Eventual un dump to sql, replace si reimport.

#7
jimmyy

jimmyy

    Member

  • Grup: Members
  • Posts: 697
  • Înscris: 21.04.2008
Am schimbat pe utf_general_ci și e tot la fel, le întoarce pe toate.
Am verificat primul rând întors îl conține doar pe noul ț, m-am uitat cu lupa :)

Un replace pe baza de date, ce vreți să spuneți? să fac un export și apoi un replace vechiul cu noul în Notepad++ ?
Binențeles cu backup înainte.

#8
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Probabil iti trebuie binary. Nici nu trebuie sa modifici collation al tabelei, COLLATE ar trebui sa functioneze individual pe query.

#9
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
utf8_bin

https://stackoverflo...-collation-have

Desigur trebuie cautat separat ț de Ț

Edited by dani.user, 16 March 2019 - 12:15.


Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate