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

hvordan man gemmer accentmærker over tegn i min database

UTF-8 er (generelt) en "sikker" kodning for ethvert tegnsæt i verden. (Ikke altid den mest effektive, og der er nogle argumenter, der skal fremføres for, at Unicode underrepræsenterer CJK-scripts med dens "unified han"-model, men fortsætter...)

Det er dog sandsynligt, at dine grænsefladeprogrammer ikke oversætter til/fra UTF-8 korrekt. For eksempel ser ó => ó ud som om UTF-8-data (hvor ét tegn kan spredes over et varierende antal bytes) bliver præsenteret for dig ved hjælp af en enkeltbyte europæisk kodning, som ISO-8859-15 eller MS- CP-1451 eller lignende.

Du er sandsynligvis gemmer dataene korrekt, men indlæser det forkert. Hvis du bare bruger mysql terminalprogram eller lignende, sørg for at din terminal er indstillet til at bruge UTF-8 (på et Unix/Linux-system, locale skal nok være noget, der ender på .utf8 , for eksempel. min har LANG=en_US.utf8 )

Hvis du trækker data ved hjælp af et GUI-værktøj eller lignende, skal du tjekke dets Indstillinger/Præferencer-panel for tegnsættet.

Hvis du får de forkert oversatte tegn tilbage til et program, du har skrevet, skal du se på dit sprogs værktøjer til indstilling af lokalitet. (Måske INSERT rutiner har det rigtige, men SELECT rutiner går det galt?)

Og hvis dette sendes til internettet, skal du sørge for, at dine (XML|HTML|XHTML) filer har charset=utf8 erklæret på det eller de relevante steder, eller oversæt tilbage fra UTF-8 til tegnsættet i dit dokument (hvis muligt) ved hjælp af noget som iconv ved indsættelse af tekst fra databasen. (De fleste ikke-Unicode-tegnsæt kan kun repræsentere en delmængde af Unicode, selvfølgelig; ISO-8859-15-sættet gør f.eks. et anstændigt stykke arbejde med at dække europæiske sprog, men har ingen understøttelse af kyrilliske, arabiske eller CJK-skriftsystemer, så det er muligt at undlade at oversætte et tegn.) I Perl kan du bruge pass argumenter til at open eller brug binmode at opsætte et transparent tegnsæt-oversættelseslag på en "filehandle"-stream.




  1. Mistet forbindelse til MySQL-server under forespørgsel

  2. Er det muligt at indsætte data i en MySQL-visning?

  3. MySQL geospacial søgning ved hjælp af haversine-formlen returnerer null på samme punkt

  4. Hvordan optimerer man en tabel til AVG-forespørgsler?