Avatar billede the_saint Nybegynder
14. maj 2009 - 15:35 Der er 4 kommentarer og
1 løsning

Forvirring mellem latin1 og utf8- troede min db var i utf8?

Hej Experter.

Jeg er pt. hostet hos surftown, hvor jeg har lavet en database dump, da jeg skal flytte min side over på en VPS, som kører Debian Lenny.

Jeg har installeret mysql, og forsøger nu at importere min database (Som jeg faktisk gik og troede var i UTF-8)

Jeg har i my.cnf sat følgende:
[client]
default-character-set=utf8

[mysqld]
character-set-server = utf8

og oprettet min database sådan her:

create database contacts CHARACTER SET utf8 COLLATE utf8_danish_ci;


Det betyder at nu ser SHOW VARIABLES LIKE 'character_set%' sådan her ud:

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client    | utf8                      |
| character_set_connection | utf8                      |
| character_set_database  | utf8                      |
| character_set_filesystem | binary                    |
| character_set_results    | utf8                      |
| character_set_server    | utf8                      |
| character_set_system    | utf8                      |
| character_sets_dir      | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+


Nu importere jeg databasen

mysql -p dbname < dbname.sql

Men når jeg laver en select set mit resultat sådan her ud:

+-----------------------------+
| text                        |
+-----------------------------+
| Møde med fremvisning/demo. |
+-----------------------------+

Hvis jeg derimod laver følgende:
set names 'latin1';

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client    | latin1                    |
| character_set_connection | latin1                    |
| character_set_database  | utf8                      |
| character_set_filesystem | binary                    |
| character_set_results    | latin1                    |
| character_set_server    | utf8                      |
| character_set_system    | utf8                      |
| character_sets_dir      | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+


får jeg et korrekt output, men jeg vil jo gerne have et helt rent UTF8 system.

Hvor ligger fejlen? Og hvad kan jeg evt. gøre for at få det til at spille?

Det skal siges at når jeg åbner filen på min windows, med EmEditor, så er alle tegn korrekt, og den angiver at filen er en UTF-8 fil.

Når jeg åbner filen på min debian med less får jeg korrupte tegn.
Avatar billede arne_v Ekspert
16. maj 2009 - 03:19 #1
"Møde med fremvisning/demo."

ser helt korrekt ud !

Din database afleverer pænt UTF-8 som den skal.

Din database har ikke en snus at gøre med at det program du bruger til at udføre query med vise det som det havde været ISO-8859-1.
Avatar billede the_saint Nybegynder
16. maj 2009 - 17:50 #2
Jeg bruger den "originale" mysql client 5.0 til debian.

mysql -u xxx -p ...

Men problemet er jo når jeg sætter programmet til at bruge UTF-8, så returnere den de korrupte tegn, hvor når jeg sætter den til latin1 så viser den rigtige tegn.
Avatar billede arne_v Ekspert
17. maj 2009 - 04:00 #3
Jeg ved ikke rigtigt med den mysql utility over en ssh.

Virker det i PHP med UTF-8 som charset på siden?
Avatar billede the_saint Nybegynder
18. maj 2009 - 12:47 #4
Hvis jeg har set names 'utf8' før alle mine kald i mysql, så får jeg samme underlige output, men hvis jeg commenter den linje ud så ser det rigtige ud...
Avatar billede the_saint Nybegynder
30. juli 2009 - 20:31 #5
Jeg fjernede set names utf8 fra mine php sider, det er ikke den optimale løsning, men det må virke indtil jeg finder den rigtige løsning.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester