Salt la conținut

SUBIECTE NOI
« 1 / 5 »
RSS
HEV D Segment - intrebari/pareri ...

Parteneriate/Colaborari/Asocieri ...

Hyperos consum excesiv baterie?

Contractul pentru Salubrizare est...
 Elicopterul care-l transporta pe ...

Sfaturi achizitionare apartament ...

Permis de conducere nou

Packet Loss la Digi
 Masurare parametri CATV prin Conn...

Youtube a inceput sa aiba lag!?

Internet Archive - adauga item la...

Electrica Furnizare + Poșta ...
 Probleme cu scurgerea de ulei pe ...

Blocuri cu apartamente de 5+ camere

Casa noua finisata, teava incalzi...

Ce marca si model de DVD-RW sa cu...
 

Ț-ul românesc și mysql

- - - - -
  • Vă rugăm să vă autentificați pentru a răspunde
8 răspunsuri în acest subiect

#1
jimmyy

jimmyy

    Member

  • Grup: Members
  • Mesaje: 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
  • Mesaje: 30.267
  • Î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
  • Mesaje: 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
  • Mesaje: 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

Editat de jimmyy, 16 martie 2019 - 10:54.


#5
OriginalCopy

OriginalCopy

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

  • Grup: Senior Members
  • Mesaje: 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
  • Mesaje: 30.267
  • Î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
  • Mesaje: 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
  • Mesaje: 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
  • Mesaje: 30.267
  • Înscris: 24.02.2007
utf8_bin

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

Desigur trebuie cautat separat ț de Ț

Editat de dani.user, 16 martie 2019 - 12:15.


Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

Utilizatori activi: 1

0 membri, 1 vizitatori, 0 utilizatori anonimi

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