Vi har en side hvor folk indtaster et par ord der gemmes i databasen, alt er sat til utf8. databasen er utf8, filerne er gemt i utf8, header har utf8, forbindelsen til mysql serveren er i php sat til utf8.
Alligevel har et par stykker stadig det problem at æø eller å gemmes i databasen som '?'.
brugerne køre xp og vista, ie8.
det samme gør jeg, men jeg har ikke selv problemet.
(du skriver dine ord på én php side, der kalder et javascript, hvis formål er at gemme ordene via et andet php script. ajax. javascript filen er også gemt i utf8)
-> #2 - hvis der bruges UTF8 alle steder burde æøå virke fint nok!
-> #0 - kan du ikke tjekke om dem der har problemer ikke har fået indstillet deres browser til at bruge et bestemt tegnsæt, selvom jeg ville mene at det siden oplyser burde ovberskrive browserens indstilling.
jeg har lige arbejdet med en hjemmeside for nogen tid siden som havde charset og filer i UTF-8 - der døde alle æ ø å ved afsendelse fra fromler osv.. så jeg tror den nemmeste måde at komme det til livs på er en str replace til html koden for tegnet.
php snakker iso-8859-1 fra standard pånær andet er defineret - så at de sender æ ø å afsted burde den godt kunne nå at fange og omskrive dem. for hvis de lander i en UTF defineret mysql database blir det slået ihjel - samme gør udtrækket af et æ ø å til et UTF-8 dokument. det var i hvert fald hva jeg gjorde på den side som jeg hjalp til med dengang. og det virkede. der var også UTF-8 sql db, utf-8 dokumenter og charset.
alternativt - hvis du benytter et header dokument og har muligheden så ændre til iso-8859-1 ville være den bedste løsning for et dansk website. gem da dokumenter i ansi -iso
#2 - bruger utf8 alle steder... mange kan godt komme igennem med æøå... og jeg bruger php mb_ (multibyte) funktioner hvor jeg kan.
#3 - Jeg fik det svar at vista installationen er helt ny... vedkommende vidste ikke hvordan man ændrede det... Det var ellers også mit første gæt... Så vidt jeg ved er automatisk karakter sæt standard i en ny installation.
har oplevet samme problem, med et site jeg lavede før jeg var klar over at ISO-8859-1 og AJAX ikke passede særlig godt sammen, der brugte jeg utf8_decode() på de strenge der kom fra et ajax-kald og skulle i db
så vidt jeg kan se skulle det være som ovenstående?
(jeg har løst det ved at tjekke for utf-8 i php-filen der modtager fra javascriptet, og så konvertere hvis det er nødvendigt, men jeg ser hellere at der bliver brugt utf-8 hver gang.)
@splazz: Jeg benytter mig af Web Developer toolbar'en til Firefox. :) Super smart stykke værktøj som kan hjælpe med at bugfixe rigtig mange ting på klientsiden. :)
Altså, for og imod diverse browsere er en endeløs debat man aldrig kan blive enige om. :)
Firefox har for mig været den eneste rigtige browser i udviklingsøjemed. Men uanset, så har jeg altid en vifte af browsere jeg kontrollerer mit output op imod (IE, Safari, Opera og Firefox. Google Chrome gider jeg ikke bruge tid på - endnu).
Jeg er rigtig glad for at i gider at bruge så meget tid på det her.
#12 - data kommer frem, via post, defineret i variablen url, men stadig som iso når der bruges ie.
#13 - jeg har nu tilføjet:
header('Content-Type: text/html; charset=utf-8');
og det afspejles i response header. men det var desværre ikke nok. (burde jeg gøre det i alle filer? for god orden. jeg har indtil videre bare skrevet det i meta tags)
Prøv lige i dit <form> element at tilføje accept-charset. Altså: <form action="/addsite.php" method="post" id="siteform"> rettes til <form action="/addsite.php" method="post" id="siteform" accept-charset="UTF-8">
-> repox - nu fik jeg installeret ff og den udvidelse dér, og jeg har en side med et ajax-script hvor charset også er sat, men det kan jeg ikke se i respond-tingen...
Så vælger du Information -> Vis response headers i din Web Developer toolbar.
Så skulle du gerne få åbnet en fane hvor responsen fra serveren står skrevet.
Du kan så hurtigt se at min utf8.php fil responderer med Content-Type: text/html; charset=UTF-8 i modsætning til OP's sider. Det kan have stor betydning for problemet.
Hvis du nu tilgår den pågældende AJAX modtagende side, med et almindeligt http kald, så kan du også se om siden responderer som forventet. Et AJAX kald er jo egentlig bare et HTTP kald fra din egen browser.
Det er i princippet ligegyldigt hvilken side jeg er på. Hvis min browser ikke ved hvad den skal sende til dig, så får det som den som standard vil sende (IE vil gerne sende Windows-1252).
Du skal sørge for at alle de sider du har text/html output på smider det rigtige charset ud til browseren.
Udover at du laver noget gris ved at hente et helt HTML dokument ind i et eksisterende HTML dokument (altså, både med doctype, html, head body og sådan noget) med editkeywords, så tror jeg problemet ligger i din addKeyword() funktion.
Prøv at udkommentere: xmlHttpKeywordadd.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
og så fjern udkommenteren af den oprindelige og ret den til xmlHttpKeywordadd.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
Hej igen og tak for alle jeres svar. Det lykkedes mig faktisk at finde fejlen... jeg brugte ikke encodeURI... så simpelt var det.
jeg har ladet mig fortælle at det meste simple er det mest oversete... :D
men ikke desto mindre har jeg taget alle de andre råd til mig, jeg syntes der er stor forskel på, hvad der virker og hvordan det burde gøres.
i skal have tak for denne gang, og i er selvfølgelig velkomne til at komme forbi og bruge siden, jeg skal sørge for at i får det lidt mere gratis end de andre...
( giver i nogle svar, giver jeg nogle point... :D )
Synes godt om
Ny brugerNybegynder
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.