sql >> Database teknologi >  >> RDS >> Mysql

hvordan håndterer man accenter og mærkelige tegn i en database?

Samling påvirker kun tekstsortering, det har ingen effekt på det faktiske tegnsæt af lagrede data.

Jeg vil anbefale denne konfiguration:

  1. Indstil tegnsættet for hele DB kun, så du ikke behøver at indstille det for hvert bord separat. Tegnsæt nedarves fra DB til tabeller til kolonner. Brug utf8 som tegnsæt.

  2. Indstil tegnsættet for DB-forbindelsen . Udfør disse forespørgsler, efter du har oprettet forbindelse til databasen:

    SET CHARACTER SET 'utf8'
    SET NAMES 'utf8'
    
  3. Indstil tegnsættet for siden , ved hjælp af HTTP-header og/eller HTML-metatag. En af disse er nok. Brug utf-8 som charset .

Det burde være nok.

Hvis du vil have korrekt sortering af spanske strenge, skal du indstille sortering for hele databasen. utf8_spanish_ci burde virke (ci betyder Uskift mellem store og små bogstaver ). Uden korrekt sortering ville spanske tegn med accent altid blive sorteret til sidst.

Bemærk :det er muligt, at det tegnsæt af data, du allerede har i en tabel, er brudt, fordi din tegnsætkonfiguration var forkert tidligere. Du bør tjekke det ved hjælp af en DB-klient først for at udelukke denne sag. Hvis det er brudt, skal du bare genindsætte dine data med den rigtige tegnsætkonfiguration.

Hvordan er tegnsæt arbejde i en database

  • objekter har et tegnsæt attribut, som kan indstilles eksplicit, eller den er nedarvet (server> database> tabel> kolonne), så den bedste mulighed er at indstille den til hele databasen

  • klientforbindelse har også et tegnsæt attribut, og det fortæller databasen, i hvilken kodning du sender dataene

Hvis klientforbindelsens og målobjektets tegnsæt er forskellige, konverteres de data, du sender til databasen, automatisk fra forbindelsens tegnsæt til objektets tegnsæt.

Så hvis du f.eks. har dataene i utf8 , men klientforbindelse indstillet til latin1 , vil databasen bryde dataene, fordi den vil forsøge at konvertere utf8 som om det er latin1 .



  1. Jeg kan ikke indlæse JDBC-driveren til MySQL

  2. Sådan ændres sproget for din Oracle-session

  3. Sådan sammenlignes to kolonner for at finde uovertrufne poster i MySQL

  4. Fuld MariaDB-kryptering i hvile og under transport for maksimal databeskyttelse - del 1