Avatar billede sebster Nybegynder
29. april 2010 - 13:19 Der er 28 kommentarer og
1 løsning

ÆØÅ i Vcard

Hej Eksperter,

jeg sidder med vcard som skal kunne downloades fra en database. Jeg har fået det hele til at virke, men æøåÆØÅ bliver til ʯÂ∆ÿ≈ når det hentes? Hvad gør jeg forkert? Skal der en encoding til?
Avatar billede showsource Seniormester
29. april 2010 - 15:35 #1
jahhh, din db skal nok være utf8 og din php fil være gemt som utf8
Avatar billede sebster Nybegynder
30. april 2010 - 09:16 #2
Min database og websiden er UTF8!
Avatar billede olebole Juniormester
01. maj 2010 - 20:29 #3
<ole>

Jamen, hvis du bruger utf-8 hele vejen, får du næppe sådan fejl  =)

Hvor kommer indholdet af din database fra? Fra en utf-8 kilde?

Hvad mener du med "websiden er UTF8"? Det er ikke nok at bruge en meta - filen skal også være gemt som utf-8

/mvh
</bole>
Avatar billede sebster Nybegynder
03. maj 2010 - 08:42 #4
Okay. Jeg bruger UTF8_general_ci i min database. Og henter oplysninger fint ind.
Når jeg laver en echo på hjemmesiden skrives æøå fint. Men når jeg får den til at downloade mit vcard, så er der fejl i tegnene.

Min kode ser således ud:

$filnavn = $fornavn.".vcf";
$eol="\n";
$string = "BEGIN:VCARD".$eol;
$string .= "VERSION:2.1".$eol;
$string .= "N:".$efternavn.";".$fornavn.$eol;
$string .= "FN:".$fornavn.$efternavn.$eol;
$string .= "TEL;MAIN;VOICE:".$tlf.$eol;
$string .= "TEL;CELL;VOICE:".$mobil.$eol;
$string .= "ADR;WORK:;;".$adresse.";".$by.";;".$postnummer.";Denmark".$eol;
$string .= "EMAIL;INTERNET:".$email.$eol;
$string .= "REV:20011115T155906Z".$eol;
$string .= "END:VCARD";

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($filnavn));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . strlen($string));
echo $string;
exit;
Avatar billede olebole Juniormester
03. maj 2010 - 09:12 #5
Prøv at skifte:
    header('Content-Type: application/octet-stream');

- ud med:
    header('Content-Type: text/x-vcard; charset=utf-8');
Avatar billede sebster Nybegynder
03. maj 2010 - 09:25 #6
Det ændrede ikke noget!
Avatar billede olebole Juniormester
03. maj 2010 - 09:32 #7
"Når jeg laver en echo på hjemmesiden skrives æøå fint" >> Ligger der en utf-8 meta i dokumentet - og er det eksplicit gemt som utf-8?
Avatar billede sebster Nybegynder
03. maj 2010 - 09:34 #8
Det ligger intet meta i dokumentet! Ved ikke lige hvad du mener med eksplicit?
Avatar billede olebole Juniormester
03. maj 2010 - 09:47 #9
eksplicit = udtrykkeligt.

Hvis du åbner filen i Notepad og efterfølgende vælger Gem Som..., så skal der stå UTF-8 forneden
Avatar billede olebole Juniormester
03. maj 2010 - 09:50 #10
Du skal have følgende meta i hjemmeside dokumentets head:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

- og så skal dokumentet være gemt som utf-8. Ellers kan du ikke regne med, hvordan dine specialtegn ser ud
Avatar billede sebster Nybegynder
03. maj 2010 - 10:11 #11
Jeg har ændret dokumentet til være UTF8, men når jeg lukker ned så hopper den tilbage til western latin. Jeg bruger dreamweaver!

Når jeg sætter <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> ind giver den fejl!

Hvad gør jeg forkert?
Avatar billede olebole Juniormester
03. maj 2010 - 10:33 #12
I DreamWeaver:

Modify -> Page Properties -> Title/Encoding

- her vælger du Unicode (UTF-8) i dropdown menuen Encoding.

Så indsættes automatisk en korrekt meta, og filen gemmes med den rette kodning
Avatar billede sebster Nybegynder
04. maj 2010 - 08:52 #13
Det har jeg prøvet. Hvis jeg sætter flueben i "Include Unicode Signature (BOM)", så generes vcard'et ikke rigtigt!

Gør jeg noget helt forkert, eller er det bare en lille detalje?
Avatar billede olebole Juniormester
04. maj 2010 - 09:45 #14
Du skal ikke sætte flueben i BOM
Avatar billede sebster Nybegynder
04. maj 2010 - 09:56 #15
Eller bibeholdes den ikke som unicode! Så hopper den tilbage til western iso! Hvad kan jeg eller gøre?
Avatar billede olebole Juniormester
04. maj 2010 - 11:02 #16
Der er ikke noget, der hopper hos mig - og jeg har aldrig hørt om nogen, der ikke kan sætte tegnsættet i DW. Jeg ved ikke, hvad du gør galt ... men det gør du  =)
Avatar billede sebster Nybegynder
04. maj 2010 - 12:50 #17
Jeg får heller ikke automatisk et meta.

det der skal ske er at man trykker på linket under personen og der genere derefter et vcard.

Min kode hedder:

<?php
header('Content-Type: text/plain; charset=utf-8');
include('dbase.php');
$people=mysql_query("SELECT * FROM people WHERE id='$_GET[id]'");
while($emp=mysql_fetch_array($people)) {
$fornavn=$emp['firstname'];
$efternavn=$emp['lastname'];
$tlf=$emp['phone'];
$mobil=$emp['mobile'];
$adresse=$emp['address'];
$by=$emp['city'];
$postnummer=$emp['post'];
$email=$emp['email'];
}
   
$filnavn = $fornavn." ".$efternavn.".vcf";
$eol="\n";
$string = "BEGIN:VCARD".$eol;
$string .= "VERSION:2.1".$eol;
$string .= "N:".$efternavn.";".$fornavn.$eol;
$string .= "FN:".$fornavn.$efternavn.$eol;

$string .= "TEL;WORK;VOICE:".$direct.$eol;
$string .= "TEL;CELL;VOICE:".$mobil.$eol;
$string .= "ADR;WORK:;;".$adresse.";".$by.";;".$postnummer.";Denmark".$eol;
$string .= "EMAIL;INTERNET:".$email.$eol;
$string .= "REV:20011115T155906Z".$eol;
$string .= "END:VCARD";

header('Content-Description: File Transfer');
header('Content-Type: text/x-vcard; charset=utf-8');
header('Content-Disposition: attachment; filename='.basename($filnavn));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . strlen($string));
echo $string;
exit;
?>


Den laver et perfekt vcard, men den er gal med ÆØÅ.

Hvor skal jeg indsætte meta for at det bliver rigtigt?
Avatar billede olebole Juniormester
04. maj 2010 - 13:05 #18
Det har du gjort i dét dokument, men det er jo slet ikke det dokument, jeg taler om. Læs, hvad jeg skrev:
    http://www.eksperten.dk/spm/908386#reply_7584567

Jeg tvivler nemlig på, dit databaseindhold er utf-8 - og at det alm. HTML-dokument, du tester med (og hvor æ, ø og å virker), er et utf-8 dokument
Avatar billede sebster Nybegynder
04. maj 2010 - 13:51 #19
Jeg tror du har ret! Min database er ganske vist UTF8, men tror ikke at dokumentet er UTF8! Og derfor vises det også forkert!

Selv når jeg sætter <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
vises det forkert!
Avatar billede olebole Juniormester
04. maj 2010 - 14:11 #20
Du skal i DW gøre, som jeg beskrev. Så gemmes dokumentet nemlig også som utf-8 (og det er ekstremt vigtigt).

Hvis det dokument, der indsætter dine data i databasen ikke også er et utf-8 dokument, hjælper det ikke, din database er sat op til utf-8.

Er dokumentet, der indsætter, f.eks. et iso-8859-1 dokument, vil indholdet af DB'en ikke være utf-8 kodet - og så kan selv det bedste utf-8 dokument ikke vise disse data korrekt.
Avatar billede sebster Nybegynder
04. maj 2010 - 14:19 #21
Dataen er faktisk indsat direkte i databasen! Så der skulle helst ikke være et problem!


Har du testet det og fået det til at virke med æøå?
Avatar billede olebole Juniormester
04. maj 2010 - 14:26 #22
"Dataen er faktisk indsat direkte i databasen! Så der skulle helst ikke være et problem!" >> Hvad mener du med "direkte"? Du indsætter dem vel med et eller andet  =)

I en anden, aktuel tråd om utf-8, er data indsat via phpMyAdmin, som jo blot er en samling websider ... og de er vel at mærke iso-8859-1 kodet
Avatar billede olebole Juniormester
04. maj 2010 - 14:29 #23
- og det er ikke nødvendigt for mig at teste noget. Jeg ved, at hvis alle led i kæden er kodet/gemt korrekt, vil der ikke være problemer. Hvis ét led ikke er, vil der opstå problemer. Simple as that  =)
Avatar billede sebster Nybegynder
25. maj 2010 - 11:12 #24
Jeg fandt løsningen. Den skulle bare opdateres til v. 3.0 så var den der!
Avatar billede olebole Juniormester
25. maj 2010 - 11:19 #25
Hvad skulle opdateres til v. 3.0?
Avatar billede sebster Nybegynder
25. maj 2010 - 11:24 #26
Versionen på VCARD!

$string = "BEGIN:VCARD".$eol;
$string .= "VERSION:3.0".$eol;

Men du må meget gerne smide et svar så sender jeg point, som tak for besværet!
Avatar billede olebole Juniormester
25. maj 2010 - 13:05 #27
Ellers tak, jeg var bare nysgerrig. Læg bare selv et svar og accepter det  =)
Avatar billede sebster Nybegynder
25. maj 2010 - 13:52 #28
Jamen så tak for hjælpen!
Avatar billede olebole Juniormester
25. maj 2010 - 14:02 #29
Det var så lidt - og så lærte jeg jo også noget  ;o)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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