sql >> Databáze >  >> RDS >> Mysql

jak ukládat akcenty nad znaky v mé databázi

UTF-8 je (obecně) „bezpečné“ kódování pro jakoukoli znakovou sadu na světě. (Ne vždy to je nejúčinnější a je třeba uvést několik argumentů, že Unicode nedostatečně zastupuje skripty CJK se svým modelem „unified han“, ale pokračujeme…)

Je však pravděpodobné, že váš program(y) rozhraní nepřekládají správně do/z UTF-8. Například ó => ó vypadá, že data UTF-8 (kde jeden znak může být rozložen do různého počtu bajtů) jsou vám prezentována pomocí jednobajtového evropského kódování, jako je ISO-8859-15 nebo MS- CP-1451 nebo podobný.

Jste pravděpodobně správné ukládání dat, ale načítání to nesprávně. Pokud právě používáte mysql terminálový program nebo podobný, ujistěte se, že váš terminál je nastaven na používání UTF-8 (v systému Unix/Linux locale by pravděpodobně mělo být něco končící na .utf8 , např. můj má LANG=en_US.utf8 )

Pokud stahujete data pomocí nástroje GUI nebo podobného, ​​zkontrolujte znakovou sadu na panelu Nastavení/Předvolby.

Pokud dostáváte špatně přeložené znaky zpět do aplikace, kterou jste napsali, podívejte se na nástroje vašeho jazyka pro nastavení národního prostředí. (Možná, že INSERT rutiny to mají správně, ale SELECT rutiny to mají špatně?)

A pokud se to posílá na web, ujistěte se, že vaše soubory (XML|HTML|XHTML) mají charset=utf8 deklarováno na příslušném místě (místech), nebo přeložte zpět z UTF-8 do znakové sady vašeho dokumentu (pokud je to možné) pomocí něčeho jako iconv při vkládání textu z databáze. (Většina znakových sad jiných než Unicode může samozřejmě představovat pouze podmnožinu Unicode; např. sada ISO-8859-15 odvádí slušnou práci při pokrytí evropských jazyků, ale nemá žádnou podporu pro systémy psaní cyrilice, arabštiny nebo CJK, takže je možné selhat při překladu znaku.) V Perlu můžete použít předávací argumenty k open nebo použijte binmode k nastavení transparentní vrstvy překladu znakové sady na streamu "filehandle".




  1. @BatchSize chytré nebo hloupé použití?

  2. Otázka AKTUALIZACE DUPLIKÁTNÍHO KLÍČE MYSQL

  3. Kurzorová smyčka MYSQL, spustí jedno kolo navíc, proč?

  4. Seskupit podle - více podmínek - MySQL