Avatar billede straszek Praktikant
11. september 2008 - 19:06 Der er 15 kommentarer og
1 løsning

også lidt problemer med danske tegn

Jeg har dette lille script, der laver nogle txt filer som skal bruges af et fragtfirma

Script:
$str = "\"$row[orders_id]\", \"$row[delivery_name]\",  \"$row[delivery_street_address]\",  \"$row[delivery_suburb]\",  \"$row[delivery_postcode]\", \"$row[delivery_city]\",  \"$row[delivery_postcode]\",  \"$landekode\", \"$row[customers_telephone]\", \"$row[customers_email_address]\" , \"$sendingsmetode\", \"tøj\"";
$file="edisoft/$row[orders_id]";
$file .=".txt";

$fp = fopen($file,"w");
fwrite($fp, $str);
fclose($fp);

Det virker fint, bortset fra at de rækker der hentes fra database fejler med hensyn til æøå.tekst skrevet direkte som "tøj", vises korrekt.

Databasen er i Latin1_danish_ci

HVad kan gøre for at rette problemet ?
Avatar billede w13 Novice
11. september 2008 - 19:18 #1
Du skal ændre tegnsættet i din database til at være utf-8, og ændre fil-encodingen af dine filer til samme.
Avatar billede straszek Praktikant
11. september 2008 - 19:21 #2
Det er ikke muligt at ændre i databasen - kan det fikses på en anden måde?
Avatar billede w13 Novice
11. september 2008 - 19:30 #3
Ja, du kan vel parse det med funktionen utf8_encode()
Avatar billede erikjacobsen Ekspert
11. september 2008 - 19:45 #4
Hvilket tegnsæt (encoding) er dit script lavet med (det der indeholder "tøj")?
Hvilket tegnsæt er den webside, der viser indholdt sat til?
Hvor kommer data i tabellen fra, og hvilket tegnsæt er anvendt der?
Avatar billede straszek Praktikant
11. september 2008 - 19:50 #5
Der er ingen webside indblandet, scriptet lave et output der bliver gemt i en txt fil.

Data i tabellen kommer fra brugerindtastninger og som skrevet oven for så er Latin1_danish_ci

Selv koden/scriptet er skrevet i en simpel text editoer
Avatar billede w13 Novice
11. september 2008 - 19:59 #6
Det er ligemeget hvilket editor det er skrevet i :P Scriptet er vel skrevet i php?? For så forstår jeg ikke problemet i at parse det. Det gør jo ingen forskel om du gemmer det i en fil eller udskriver det på en side ...
Avatar billede erikjacobsen Ekspert
11. september 2008 - 20:01 #7
Det med websiden er selvfølgelig korrekt ... jeg overfortolker. Men så er spørgsmålet: det hvor du anvender tekstfilen, hvilket tegnsæt forventes der?

"Selv koden/scriptet er skrevet i en simpel text editoer" - ja, og gemt med hvilket tegnsæt?
Avatar billede straszek Praktikant
11. september 2008 - 20:09 #8
ja scriptet er naturligvis skrevet i php, og scriptet er det som i se ovenfor.

Filen skal i følge vejledningen til det systemet jeg forsøger at lave filer til være i 8 bits ascii

jeg har prøver at gemme filen uft-8 og iso latin 1 uden at det gør nogen forskel.
Avatar billede straszek Praktikant
11. september 2008 - 20:15 #9
en kombination af at bruge  utf8_encode() og gemme filen i uft-8 se ud til at virke
Avatar billede erikjacobsen Ekspert
11. september 2008 - 20:25 #10
Godt!

Skal vi ikke slå fast, w13, at det aldrig hjælper på disse problmer at ændre på tegnsættet i databasen. Der ligger nu de bytes, der ligger, og som er lagt af det program/webside, der har lagt dem ind som enten utf-8, iso-8859-1, eller noget mere eksotisk. Tegnsættet i databasen hjælper på sortering (ORDER BY), og den slags.

UTF-8 i en almindelig mysql er også en smule problematisk, da fx en varchar(20) kan indeholde 20 "a"-er, men kun 10 "æ"-er.
Avatar billede w13 Novice
11. september 2008 - 21:49 #11
Jeg er ikke så meget inde i det, men det burde vel ikke være et minus at have et UTF8-charset i sin database. Eksisterende data vil selvfølgelig stadig være i det charset, det blev gemt som, men fremtidigt indhold vil blive UTF8.

Det du nævner med varchar er selvfølgelig lidt problematisk.
Avatar billede erikjacobsen Ekspert
11. september 2008 - 21:56 #12
"men det burde vel ikke være et minus at have et UTF8-charset i sin database" - selvfølgelig er det et plus, sortering osv., men det løser ikke det aktuelle problem, og er derfor mere til forvirring end løsning, at nævne det som det første. Undskyld, straszek, at jeg kaprer dit spørgsmål for at opdrage lidt på w13 ;)
Avatar billede erikjacobsen Ekspert
11. september 2008 - 22:01 #13
"Det du nævner med varchar er selvfølgelig lidt problematisk." - derfor vil man også ofte vælge at opbevare data som iso-8859-1, hvis man ved man kan nøjes med det, men så konvertere til og fra utf-8 på fx websider, hvis man ved utf-8 er nødvendigt der. Men vi er så ude i nogle lidt langhårede overvejelser....
Avatar billede w13 Novice
11. september 2008 - 22:15 #14
Ja, ved gennemlæsning kan jeg se, at mit første indlæg er temmelig mangelfuldt og dårligt prioriteret. :)
Avatar billede straszek Praktikant
23. september 2008 - 09:10 #15
smide nogle svar, og se evt. http://www.eksperten.dk/spm/846398
Avatar billede straszek Praktikant
29. oktober 2008 - 13:39 #16
lukker
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