optimus Posted November 17, 2006 Report Share Posted November 17, 2006 Vai kāds šajā forumā beidzot var paskaidrot, kā iedumpēt MySQL 5 tabulā datus ar latviešu rakstuzīmēm, piem., "Uģis", tā lai tie lapā tiktu atainoti pareizi, nevis "U?is". Lasu šo forumu jau vairākas stundas un saprotu ka nevienam tāpat tā īsti tas nav skaidrs, tāpēc šie jautājumi dažādās variācijās atkārtojas. Sūta cits citu uz Googli, izsaka dažādas vairāk vai mazāk pārgudras piezīmes, tomēr lietas patieso būtību tāpat neviens neprot izskaidrot, kaut gan, esmu pārliecināts, ka ir tādi cilvēki kas var normāli izskaidrot to enkodinga sistēmu. Manā gadījumā: MySQL tabulas lauki ir ar latin1_swedish_ci kodējumu (kā noprotu, tas ir Latvijas noklusētais) Lapa, kurā jāattēlo informācija ir ar windows-1257 kodējumu. Pateikšu godīgi - es tā īsti līdz galam nesaprotu kas ir Collation un kā ar to pareizi rīkoties. Centos lasīt MySQL manuāli, tomēr nespēju izprast to lietu. Patiesībā vēlos, lai kāds beidzot vienkārši pasāka parastas loģiskas darbības kā veikt dampu, lai viss tiktu attēlots pareizi? Link to comment Share on other sites More sharing options...
andrisp Posted November 17, 2006 Report Share Posted November 17, 2006 latin1_swedish_ci cik zinu nav kodējums, bet gan kolācija. Kolācija nosaka kādā veidā tiks kārtoti dati. Piem., utf8_latvian_ci nosaka, ka 'a' nāk pirms 'ā' utt. Vismaz tā to es saprotu. Vairāk uz sitien nevarēšu tev neko pateikt. Link to comment Share on other sites More sharing options...
v3rb0 Posted November 17, 2006 Report Share Posted November 17, 2006 1. mysql connection charsetu pareizu 2. cp1257_general_ci vai cp1257_general_cs izklausās vairāk pēc windows-1257 par kaut kādu latin_zviedru_ci 3. ci/cs ir nav CaSe JūTīGs Link to comment Share on other sites More sharing options...
nemec Posted November 17, 2006 Report Share Posted November 17, 2006 show variables like '%character%'; ieraksti pieprasiijumaa un apskaties, kaa tad connections sareguleets Link to comment Share on other sites More sharing options...
optimus Posted November 17, 2006 Author Report Share Posted November 17, 2006 show variables like '%character%'; ieraksti pieprasiijumaa un apskaties, kaa tad connections sareguleets Paldies, šito izmēģināšu, varbūt kaut kas noskaidrosies! Link to comment Share on other sites More sharing options...
optimus Posted November 17, 2006 Author Report Share Posted November 17, 2006 Par to ci/cs sapratu, to izlasīju arī manuālī. Tomēr, ņemot vērā, ka tur rakstīts: A character set is a set of symbols and encodings. A collation is a set of rules for comparing characters in a character set. Tātad - character set ir kodējums kas nosaka kādi simboli ietilpst katrā konkrētā kodējumā, bet collation ir noteikumu kopums, kas nosaka kā katra noteikta kodējuma simboli tiks kārtoti un kādas darbības ar tiem var tikt veiktas. Character set Suppose that we have an alphabet with four letters: ‘A’, ‘B’, ‘a’, ‘b’. We give each letter a number: ‘A’ = 0, ‘B’ = 1, ‘a’ = 2, ‘b’ = 3. The letter ‘A’ is a symbol, the number 0 is the encoding for ‘A’, and the combination of all four letters and their encodings is a character set. Collation Suppose that we want to compare two string values, ‘A’ and ‘B’. The simplest way to do this is to look at the encodings: 0 for ‘A’ and 1 for ‘B’. Because 0 is less than 1, we say ‘A’ is less than ‘B’. What we've just done is apply a collation to our character set. The collation is a set of rules. Tā tālāk seko secinājums: MySQL can do these things: Store strings using a variety of character sets Compare strings using a variety of collations Mix strings with different character sets or collations in the same server, the same database, or even the same table Allow specification of character set and collation at any level. Tiktālu es saprotu, bet kā to pielietot reālajā dzīvē - tas jāapgūst Link to comment Share on other sites More sharing options...
Grey_Wolf Posted November 17, 2006 Report Share Posted November 17, 2006 (edited) Cik var ZB jau... mysql_query("SET NAMES UTF8"); 1 reizi pie konekcijas VISS !!!!!!!!!!! Un PO kaads Colac. tev ir uzlikts tabulai ... (protams labaak parveido to uz UTF-8) (kautvai katrai kolonai atseviskji..) Edit: ko dara collation jau pats saprati... Starp citu shiis veertiibas glabaajas Failos ;) nevis Kaa tabulas ;) Win videe... Mysql/share/charsets/*.xml ---------------------- Edited November 17, 2006 by Grey_Wolf Link to comment Share on other sites More sharing options...
andrisp Posted November 17, 2006 Report Share Posted November 17, 2006 (edited) Grey_Wolf, viņš neizmanto utf8. Bet tas set names tāpat vajadzīgs. Edited November 17, 2006 by andrisp Link to comment Share on other sites More sharing options...
nemec Posted November 17, 2006 Report Share Posted November 17, 2006 nav po. pameegini uzlikt laukam citu codeejumu un tad pieprasiijumu select * from table where banana like 'āš' ja banana staav cits kodeejums, mysql -> errors Link to comment Share on other sites More sharing options...
optimus Posted November 17, 2006 Author Report Share Posted November 17, 2006 Labi, es saprotu, ka var to SET NAMES izmantot, bet kuru tad Charsetu izmantot? Ja defaultā tabulai collation ir latin1_swedish_ci, tad likumsakarīgi būtu izmantot latin1 charsetu. Bet kad es tā izdarīju, tad vienalga lapā latv. vārdi bija nepareizi, tikai "U?is" vietā parādījās "UÄ£is" un ne miņas no "Uģis". Kur tad kļūda? Var jau visu salikt uz utf-8, tas jau būtu ideāli, tomēr es nevaru pārcelt visu lapu uz utf-8 ne vinas dienas, ne nedēlas laikā. Un arī SET NAMES variants ir tikai ielāps, kuru var izmantot, bet tas, domājams, nav īstais risinājums. Jo pareizi būtu izmantot pareizo charsertu un pareizo collation, bez SET NAMES. Tā vismaz es domāju. Link to comment Share on other sites More sharing options...
v3rb0 Posted November 17, 2006 Report Share Posted November 17, 2006 apstījies cp1257_general? neder? kāpēc tu visu laiku domā/stāsti ka latviešu burti būs mysql defaultais čarsets? uzliec visur kur vien vari norādīt vienādu čarsetu (tabula, konekcija, htmls) un rādīsies korekti, kāda starpība tas ir defaultais vai nē, galvenais ka zini ko un kāpēc liki! Link to comment Share on other sites More sharing options...
optimus Posted November 17, 2006 Author Report Share Posted November 17, 2006 apstījies cp1257_general?neder? kāpēc tu visu laiku domā/stāsti ka latviešu burti būs mysql defaultais čarsets? uzliec visur kur vien vari norādīt vienādu čarsetu (tabula, konekcija, htmls) un rādīsies korekti, kāda starpība tas ir defaultais vai nē, galvenais ka zini ko un kāpēc liki! Es tikai norādīju, ka manuālī ir teikts, ka cp1257_general ir defaultais priekš Latvijas. Jā, bet es jau te arī cenšos tā izdarīt kā tu saki Link to comment Share on other sites More sharing options...
optimus Posted November 17, 2006 Author Report Share Posted November 17, 2006 Nu, es beidzot tiku ar savu problēmu galā ;-) Tas, ko es no visām darbībām sapratu, ka patiesībā MySQL 5 gadījumā jāsāk visu veidot pareizi jau no paša sākuma. Respektīvi, ja saits, jeb html kods ir ar windows-1257 kodējumu, tad datubāze jau pašā sākumā jāveido ar cp1257 charsetu un tabulu collation jābūt ar cp1257_general_ci. Tad nerodas nekādas problēmas un nav arī nepieciešama lieka darbība ar MySQL --> mysql_query("SET NAMES any_charset");, jeb vairākas liekas rindas php kodā. Attiecīgi, ja html ir utf-8, tad charsets datubāzei arī jāliek utf8 un tabulu collation jābūt utf8_general_ci vai utf8_latvian_ci (te man vēl jānoskaidro kura kurā gadījumā jāizmanto). Te arī nevajag to mysql_query("SET NAMES any_charset");. Situācijā, kad tiek izmantots hostingkompānijas MySQL, kā manā gadījumā, defaultā DB charsets ir latin1 un visu jauno tabulu collation automātiski ir latin1_swedish_ci, kas ir latin1 defaultā collation. Te arī rodas neprecizitātes, kad lapas html ir windows-1257, datubāzes un tabulas charset ir latin1 un collation ir latin1_swedish_ci. Šajā gadījumā arī sākas visvisādas rotaļas ar dumpiem un nepieciešams arī visu laiku tas mysql_query("SET NAMES necessary_charset");. Tik tālu nu es esmu ticis ar savien pētījumiem ;-) Ceru, ka esmu visu sapratis pareizi! Link to comment Share on other sites More sharing options...
john.brown Posted November 17, 2006 Report Share Posted November 17, 2006 Milzu pētījums bija, lai saprastu, ka visur jāsaliek vienādi charseti, un būs laime :D Link to comment Share on other sites More sharing options...
optimus Posted November 18, 2006 Author Report Share Posted November 18, 2006 Tomēr - tas bija jāizdara ;-) Link to comment Share on other sites More sharing options...
Recommended Posts