Avatar billede jokeren77 Nybegynder
30. december 2012 - 12:51 Der er 43 kommentarer og
1 løsning

UTF8

fatter det ikke, har læst alt det jeg synes jeg kan, men er stadig lost.

Jeg har nu gennemgået alle mine filer og de er alle UFT8.

teksten ender således
"Hold kurset eller konferencen i den lille fiskerby med lystb�dehavn og industrifiskeri. R�dvig er en lille havneby p� ....."

Jeg har kigget på min db.
Servers tegnsæt: UTF-8 Unicode (utf8)
Servers forbindelsestegnsæt: uft8_danish_ci

Hvis jeg smider uft8_encode på min SQL udtræk så står teksen ordentligt.

jeg her i toppen af min sætning følgende:
<?php
    session_start();

    include_once 'languages.php';
    include 'db.php';
    $language = $_SESSION['lang'];   
   
    echo "
    <head>
    <meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\">
    <title>".$lang['PAGE_TITLE']."</title>
    </head>
    <body>";

Håber virkelig der er en der kan hjælpe mig med den, for kan ikke knække den. Har aldrig stødt på dette problem før, har lige færdiggjort en anden side, hvor alt fungerede uden problemer.

Nu fejler alt. Så vil gerne lave det rigtigt. og lære.
Avatar billede kjeldsted Novice
30. december 2012 - 12:59 #1
Og du husker vel også at gemme kildekode filen i UTF-8?
Avatar billede moddi100 Seniormester
30. december 2012 - 13:05 #2
Af og til sender php også header information af sted, hvilket kan være i modstrid med det valgte meta-charset. Hvis det er det, som er problemet, kan du prøve at indsætte nedenstående kode øverst i din fil:
<?php header('Content-Type: text/html; charset=utf-8'); ?>
Avatar billede olebole Juniormester
30. december 2012 - 13:08 #3
<ole>

"Hvis jeg smider uft8_encode på min SQL udtræk så står teksen ordentligt." >> Jamen, så er dit databaseindhold ikke utf-8. Enten kommer det fra ikke-utf-8 filer - eller også er det gammelt indhold fra før, du satte databasen til at køre utf-8.

Allerede bestående indhold ændres ikke, hvis du ændrer databasens tegnsæt og/eller tabellernes kollationer. Kun nyt indhold, indsat efter ændringen, vil være utf-8

/mvh
</bole>
Avatar billede jokeren77 Nybegynder
30. december 2012 - 13:14 #4
men kan nu se at jeg ryger over i problemet med

"Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /customers/d/1/b/mela9e.dk/httpd.www/teamstevn/mainframe.php:1) in /customers/d/1/b/mela9e.dk/httpd.www/teamstevn/mainframe.php on line 2"

Den forstår jeg lige så lidt af.
Avatar billede jokeren77 Nybegynder
30. december 2012 - 13:15 #5
har nu tjekket tabellerne og filerne igen. hvis jeg fjerne encode fra mine udtræk, så ser æøå underlige ud igen, og jeg får så #4 fejlen
Avatar billede jokeren77 Nybegynder
30. december 2012 - 13:17 #6
har lige været i DB og kigger på data, og der stod det korrekt, så loadede jeg siden, der stod det korrekt, men da jeg gemte ændrede den på æøåüäë osv.

Er det når jeg gemmer den er gal? har tjekket at filen er UTF8
Avatar billede olebole Juniormester
30. december 2012 - 13:17 #7
Jeg tror hverken du eller jeg helt har styr på, hvad du foretager dig  =)
Avatar billede jokeren77 Nybegynder
30. december 2012 - 13:21 #8
dejligt konstruktivt update :-) men rigtigt, jeg er forvirret. har aldrig haft problemet før
Avatar billede olebole Juniormester
30. december 2012 - 13:22 #9
Du bliver nødt til at forklare dig lidt tydeligere. Vi andre kan ikke se, hvad du laver, og kan derfor ikke fylde alle de blanke pletter i forklaringerne ud  =)
Avatar billede olebole Juniormester
30. december 2012 - 13:24 #10
F.eks: "har lige været i DB og kigger på data, og der stod det korrekt, så loadede jeg siden, der stod det korrekt, men da jeg gemte ændrede den på æøåüäë osv.

Er det når jeg gemmer den er gal? har tjekket at filen er UTF8"


Gemmer? Gemmer hvad - hvornår - hvorfor - og hvordan?
Avatar billede jokeren77 Nybegynder
30. december 2012 - 13:28 #11
<FORM ACTION=\"mainframeloggedon.php?side=admin_opret_rediger_slet_sider.php&func=5&id=".$id."\" method=\"POST\">
            <table width=\"700px\">           
            <tr><td width=\"150px\" valign=\"top\">".utf8_encode('Placering på siden').":</td><td><input type=\"text\" name=\"placering\" size=\"50\" style=\"width: 550px; border: 1px solid #74C043\" value=\"".utf8_encode($row[placering])."\" readonly></td></tr>
            <tr><td width=\"150px\" valign=\"top\">Overskrift Dansk:</td><td><input type=\"text\" name=\"overskrift_da\" size=\"50\" style=\"width: 550px; border: 1px solid #74C043\" value=\"".utf8_encode($row[overskrift_da])."\"></td></tr>
            <tr><td width=\"150px\" valign=\"top\">Overskrift Engelsk:</td><td><input type=\"text\" name=\"overskrift_en\" size=\"50\" style=\"width: 550px; border: 1px solid #74C043\" value=\"".utf8_encode($row[overskrift_en])."\"></td></tr>
            <tr><td width=\"150px\" valign=\"top\">Overskrift Tysk:</td><td><input type=\"text\" name=\"overskrift_de\" size=\"50\" style=\"width: 550px; border: 1px solid #74C043\" value=\"".utf8_encode($row[overskrift_de])."\"></td></tr>           
            <tr><td width=\"150px\" valign=\"top\">Teksten Dansk (DK)</td><td><TEXTAREA name=\"text_da\" ROWS=10, COLS=50 style=\"width: 550px; border: 1px solid #74C043\">".utf8_encode($row[text_da])."</TEXTAREA></td></tr>           
            <tr><td width=\"150px\" valign=\"top\">Teksten Engelsk (EN)</td><td><TEXTAREA name=\"text_en\" ROWS=10, COLS=50 style=\"width: 550px; border: 1px solid #74C043\">".utf8_encode($row[text_en])."</TEXTAREA></td></tr>
            <tr><td width=\"150px\" valign=\"top\">Teksten Tysk (DE)</td><td><TEXTAREA name=\"text_de\" ROWS=10, COLS=50 style=\"width: 550px; border: 1px solid #74C043\">".utf8_encode($row[text_de])."</TEXTAREA></td></tr>   
            <tr><td width=\"150px\" valign=\"top\"></td><td><input type=\"Submit\" value=\" Gem teksten og udgiv den. \" style=\"width: 550px; border: 1px solid #74C043\"></td></tr>
            </table>
            </FORM>";   
            }
        }
   
    //Gem redigeret
    IF($_GET[func] == '5')
        {
        include 'db.php';

        $sql = "UPDATE `tsk_fasttext` SET
            `placering`= '".$_POST['placering']."',
            `overskrift_da`='".$_POST['overskrift_da']."',
            `overskrift_en`='".$_POST['overskrift_en']."',   
            `overskrift_de`='".$_POST['overskrift_de']."',           
            `text_da`='".$_POST['text_da']."',
            `text_en`='".$_POST['text_en']."',
            `text_de`='".$_POST['text_de']."'
            WHERE `id` = ".$_GET['id']."";
           
        mysql_query($sql,$connection);
        mysql_close($connection);
Avatar billede jokeren77 Nybegynder
30. december 2012 - 13:29 #12
det er den form jeg kører fra php hvor brugeren kan se data, redigere og gemme. den kører så en UPDATE
Avatar billede olebole Juniormester
30. december 2012 - 13:37 #13
Koden står pivåben for SQL-injections - men der er ikke noget i den, som er skyld i tegnsætproblemerne.

Hvis de utf8_encode, du bruger, er nødvendige, så er indholdet i databasen ikke utf-8. Hvor du laver fejl, kan jeg dog ikke afgøre udfra det, du skriver  =)
Avatar billede olebole Juniormester
30. december 2012 - 13:39 #14
Prøv at indsætte nogle helt nye data i databasen. Indsæt fra et dokument, du med garanti ved, er gemt korrekt og har en korrekt meta.

Prøv så at køre en UPDATE på de data - men uden alle dine utf8_encode's. Hvad sker der så?
Avatar billede olebole Juniormester
30. december 2012 - 13:41 #15
NB: Det er vigtigt, du indsætter data med et dokument, du selv har skrevet. Ikke noget med at sætte ind fra et database administrationsprogram
Avatar billede jokeren77 Nybegynder
30. december 2012 - 13:43 #16
jaaaa må være et ÆV.

jeg bruger Notepadd++ kan se den normalt gemmen som ANSI, hvad er forskellen på ANSi og UTF8. For jeg har aldrig tidligere rodet med formaterne, og fejlen kom pludselig da jeg ominstallerede min pc og lagde ny version af Notepad++ på og den står standard til UTF8
Avatar billede olebole Juniormester
30. december 2012 - 13:45 #17
Så er det jo derfor. iso-8859-1 er ANSI  =)
Avatar billede olebole Juniormester
30. december 2012 - 13:48 #18
Hvis du har en dansk version af Notepad++, går du ind under menuen Indstillinger -> Præferencer -> Nyt Dokument/Standardmappe. Her kan du sætte default tegnsæt ved 'Nyt dokument'  =)
Avatar billede olebole Juniormester
30. december 2012 - 13:50 #19
PS: Du bør gemme som utf-8 uden BOM. Det er tre 'usynlige' tegn i begyndelsen af dokumentet. De kan give problemer ved includes - bl.a. den fejl, du viste i #4  *o)
Avatar billede jokeren77 Nybegynder
30. december 2012 - 13:51 #20
ok, der sætter jeg den til den med at den skal gemme som UTF-8.

men har jo konverteret alle filerne til UFT8.

skal jeg lave ny filer, kopiere data over eller sådan noget?
Avatar billede jokeren77 Nybegynder
30. december 2012 - 13:59 #21
lavede nu en ny fil som du foreslog:

den skulle indsætte disse

$placering = "NyPlacering";
$overskrift_da = "overDa æøå";
$overskrift_en = "overDa xyz";
$overskrift_de = "overDa üäë";
$text_da = "textDa æøå";
$text_en = "textEn xyz";
$text_de = "textDe üäë";


Det endte sådan:
NyPlacering
overDa æøå
overDa xyz
overDa üäë
textDa æøå
textEn xyz
textDe üäë
Avatar billede jokeren77 Nybegynder
30. december 2012 - 14:00 #22
ups glemte meta sætning, er den speciel når det er UTF8 uden BOM ??
Avatar billede jokeren77 Nybegynder
30. december 2012 - 14:02 #23
stadig samme resultat efter jeg indsatte:
echo "   
<head>
<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">
</head>
<body>";
Avatar billede jokeren77 Nybegynder
30. december 2012 - 14:14 #24
du kan se den her http://teamstevn.mela9e.dk
Avatar billede olebole Juniormester
30. december 2012 - 14:37 #25
Jeg tror ikke, jeg kommer videre. Jeg er nødt til at sidde med det selv.

I øvrigt holder din HTML-kode ikke vand. Der er ikke nogen DTD eller HTML-tags. Du har to HEAD- og BODY-tags - men slutter ikke dine BODY-tags.

Et HTML-dokument skal påbegyndes med en DTD, have ét HTML element, ét HEAD element og ét BODY element. Bruger du PHP-includes, må der ikke være HTML-, HEAD- eller BODY-tags i det inkluderede dokument.

Du må heller ikke have LINK elementer i BODY elementet. De skal op i HEAD.

De ting bør du nok først få styr på. Er koden ikke i orden, kan man ikke regne med noget  =)
Avatar billede erikjacobsen Ekspert
30. december 2012 - 14:39 #26
På den pågældende side er Content-Type i HTTP-headers:

  Content-Type: text/html

Den bør være med tegnsæt. Jeg ser den engelske udgave, og i teksten:
"R&#65533;dvig is a small port town on the southern tip Stevns. " er ø-et et ISO-8859-1-tegn for ø (dvs. ANSI), men teksten serveres som UTF-8 pga din
      <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
(som også bør stå i HTTP-headeren)
Avatar billede jokeren77 Nybegynder
30. december 2012 - 15:33 #27
kan se nogle af filerne står som ASCII/UTF8

hvad er det? Det er nemlig sådan de filer der virker står.
Avatar billede erikjacobsen Ekspert
30. december 2012 - 15:53 #28
Hvordan ser du det?
Avatar billede arne_v Ekspert
30. december 2012 - 22:03 #29
Browsere bør per HTML standard fortolke indhold  med charset efter følgende prioritering:

1) charset angivet i HTTP Content-Type header
2) charset angivet i META http-equiv Content-Type
3) ISO-8859-1

saa den HTTP header burde ikke vaere et problem.
Avatar billede arne_v Ekspert
30. december 2012 - 22:08 #30
Det er et database problem.

Jeg mener at mange har haft success med SQL:

SET NAMES utf8

eller PHP:

mysql_set_charset('utf8', $con) eller mysqli_set_charset($con, 'utf8')
Avatar billede arne_v Ekspert
13. januar 2013 - 04:26 #31
joker?
Avatar billede jokeren77 Nybegynder
13. januar 2013 - 04:32 #32
kæmper stadig med problemer med UTF8.....

mit DB står til UFT8....

når jeg uploader  fra en UTF8 fil til DB, så laver den æøå om på serveren, når jeg så loader fra DB til siden, så ser det rigtigt ud. hvorfor ændres det på serveren?
Avatar billede kjeldsted Novice
13. januar 2013 - 13:59 #33
Når du skriver at du læser det "på serveren". Hvad betyder dette så? Databasen er jo blot en række af binære data, så jeg må formode at du trækker dataene ud af databasen med et stykke software, hvor du så oplever at det står forkert. Så måske denne software ikke er indstillet til at vise UTF-8?
Avatar billede olebole Juniormester
13. januar 2013 - 14:58 #34
I tillæg til #33 kan det nævnes, at phpMyAdmin ofte ses sat op til iso-8859-1 - og så skal det jo gå galt  =)
Avatar billede jokeren77 Nybegynder
14. januar 2013 - 20:32 #35
Til Kjelsted i #33;
Har opsat Notepad++ til at filerne skal være UTF-8 (Uden BOM), har derefter tjekket alle mine filer og de er alle UFT-8 (Uden BOM).

I toppen af alle mine filer står:
<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">

Jeg har nogle sider hvor jeg har <FORM>'s og ligger data op i MySQL DB. Der ligger data så forkert "Frühjahr bieten" eller "ForÃ¥rstilbud". Når jeg så laver udtræk fra databasen så vil disse ligge sådan:

Frühjahr = Frühjahr
ForÃ¥rstilbud = Forårstilbud

Umiddelbart når jeg kigger på databasen står der:
•Servers tegnsæt: UTF-8 Unicode (utf8)
•Servers forbindelse: utf8_danish_ci

Jeg har tjekket mine tabeller i databasen og de står til utf8_danish_ci

Synes ikke jeg har været ude for dette før.
Avatar billede kjeldsted Novice
14. januar 2013 - 20:42 #36
Jeg forstår slet ikke det med "ligger data op i MySQL DB. Der ligger data så forkert "
Du skriver at du indtaster på PHP siden et 'ø' og når du så udskriver fra PHP siden igen står der 'ø'? For så gemmer den vel ikke forkert.

Jeg må nok spørge igen. Når du ser at det er "forkert" i databasen, hvor kigger du så? Du kan jo ikke kigge "direkte" i MySQL databasen uden noget software til dette. Hvis du her benytter PHPMyAdmin er det blot fordi PHPMyAdmin henter dataene forkert. PHPMyAdmin laver jo blot en MySQL forespørgsel på samme måde som hvis du selv laver en forespørgsel i PHP.
Avatar billede erikjacobsen Ekspert
14. januar 2013 - 20:47 #37
Kan du vise os de sider, der går galt i #35
Avatar billede jokeren77 Nybegynder
14. januar 2013 - 20:53 #38
Ligger data op, en en FORM hvor jeg laver en SQL UPDATE eller INSERT.

I formen skriver jeg Ø og på siden viser den Ø, men i databasen står der Ã¥, burder der ikke også stå Ø her? eller tager jeg fejl, har altid haft alm. tekst i DB også.

benytter PHPMYADMIN..... men hvordan får jeg den til at vise det korrekt?
Avatar billede jokeren77 Nybegynder
14. januar 2013 - 20:55 #39
#37
bliver svært at vise siderne hvor det går galt, da data på siderne står rigtigt, det er data i PHPMYADMIN der står forkert kan jeg så forstå. men min tvivl er så om hvordan jeg retter dette.
Avatar billede erikjacobsen Ekspert
14. januar 2013 - 20:56 #40
#34 er nok beskrivelsen af dit "problem"
Avatar billede jokeren77 Nybegynder
14. januar 2013 - 20:57 #41
kan du nok have ret i, men hvordan ændre jeg det?
Avatar billede jokeren77 Nybegynder
14. januar 2013 - 21:00 #42
Serverens variabler står sådan her

character set client latin1 
(Sessionsværdi) utf8 
character set connection latin1 
(Sessionsværdi) utf8 
character set database latin1 
character set filesystem binary 
character set results latin1 
(Sessionsværdi) utf8 
character set server latin1 
character set system utf8 
collation connection latin1_swedish_ci 
(Sessionsværdi) utf8_danish_ci 
collation database latin1_swedish_ci 
collation server latin1_swedish_ci
Avatar billede jokeren77 Nybegynder
25. januar 2013 - 21:38 #43
Arne.... send svar
Avatar billede jokeren77 Nybegynder
15. marts 2013 - 19:50 #44
lukker den altså nu. beklager
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

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