Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vært snill å vurder å slå på annonsevisning, eller å abonnere på en reklamefri utgave av nettstedet.
  18 2347
Registrer deg for å skrive svar Trådrulett
april 2011
Hei folkens.

Vi utvikler et helpdesk system på jobben for øyeblikket og er snart ferdig.
Det vi nå har litt problemer med er som følger.


Vi har PHP som gir en output til fremsiden med nyhetssaker. Her har vi endret sånn at ÆØÅ vises.
Det som da skjer er at når vi gjør sånn at ÆØÅ i output her vises så vises ikke ÆØÅ i html koden i index fila.

Fjerner vi at ÆØÅ vises i php output'n så vises ÆØÅ i html koden.

Kode

<!doctype html>
<html lang=\"no\">
<html>
    <head>
        <meta charset="utf-8">
 </head>
Her er koden vi kjører på index.php fila. Har også prøvd flere forskjellige muligheter f.eks :

Kode

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
Er det noen her som har tips å komme med?


Ha en fin dag videre.
Membranplan's Avatar
mai 2011
486  360
jeg skjønner ikke hva du lurer på. Kan du prøve å omformulere deg?
april 2011
Vi har en fil som heter publish-news.php, publish-news-form.php og list-news.php.

Publish-news.php fungerer med ÆØÅ da ÆØÅ vises i databasen, men når list-news.php skal output'e dette til index fila som har koden:

Kode

<div class="nyheter">
			<div class="nyhet" id="siste">
				<?php include 'inc/list-news.php'; ?>
			</div>
så vises ikke ÆØÅ, så da virker det som at ÆØÅ i list-news.php eller index.php mot PHP ikke fungerer.
Har nå satt sånn at vanlig ren tekst i HTML viser ÆØÅ, men php viser ikke ÆØÅ på nettsiden.

Det er her problemet ligger.
55535 HP
Ozma's Avatar
feb. 2003
Skjønner fortsatt ikke hva du mener.

Outputen din burde se ut som dette:

Kode

Kode:
<!doctype html>
<html lang="no">
<head>
    <meta charset="utf-8">
    <title>Hello</title>
</head>
<body>
    Whatever PHP-greier. 
</body>
</html>
Hva mener du med "Her har vi endret sånn at ÆØÅ vises", og "vises ikke ÆØÅ i html koden i index fila."?
april 2011
ok.

Skal prøve å forklare IGJEN.

Index.php starter med

Kode

<!doctype html>
<html lang="no">
<head><meta charset="utf-8"></head>
Da vises ÆØÅ på framsiden i ren tekst for HTML. Den er jo grei.

MEN, så har vi list-news.php som skal vise nyheter på framsiden.
Her vises ikke ÆØÅ, men heller svarte spørsmålstegn.

Legger jeg inn:

Kode

header('Content-type: text/html; charset=ISO-8859-1');
i list-news.php i php tag'en så viser output'n fra nyhetssiden ÆØÅ, men da endres all ÆØÅ tekst til "egÃ¥ende".

Enten så får jeg html til å vise ÆØÅ eller php, vi får IKKE til at HTML og php viser ÆØÅ sammen.
Forklarte jeg bedre nå?
pebkac
slicer's Avatar
okt. 2005
236  106
Til tross for dårlig forklaring vil jeg tippe at du lagrer data som ISO-8859-1 i databasen din.

Sørg for å bruke UTF-8 overalt i kjeden, så skal alt fungere fint.
april 2011
Det er bare UTF-8 som står i filene nå, og i databasen står den også på UTF-8 og ikke ISO-8859-1. Men det fungerer ikke.

http://imgur.com/aUxMv1W

Her ser dere bilde av hvordan det ser ut nå.
"Generelle spørsmål og svar" fungerer med ÆØÅ, men som dere ser så fungerer ikke php output'n.
Nawesome
Provo's Avatar
nFF Crew
okt. 2006
Kan det være at noe har gått skeis med encodingen da du skrev innholdet til databasen? For eksempel at det du skrev til databasen var fra et HTML-form encodet som ISO-8859-1? Om du har oppdatert encoding til UTF-8 i noe ledd etter informasjonen du nå leser ut ble skrevet inn, så kan det være verdt et forsøk å poste informasjonen til databasen på nytt.
april 2011
Jeg legger ut en ny nyhetssak opp mot databasen etter hver endring, så det skal ikke være noe galt der.

Kode

<?php
	include '../config.php'; 
	$link = mysqli_connect($servername, $username, $password, $dbname);

	if ($link === false) {
		die("ERROR: Could not connect. " . mysqli_connect_error());
	}

	$tittel = mysqli_real_escape_string($link, $_POST['tittel']);
	$undertittel = mysqli_real_escape_string($link, $_POST['undertittel']);
	$tekst = mysqli_real_escape_string($link, $_POST['tekst']);

	$sql = "INSERT INTO nyheter (tittel, undertittel, tekst) VALUES ('$tittel', '$undertittel', '$tekst')";

	if (mysqli_query($link, $sql)) {
		header("location: ../admin.php");
	} else {
		echo "ERROR: Was not able to execute $sql " . mysqli_error($link);
	}

?>
Her er php koden for å lage nyhetssaken. Den kommer rett i databasen og i databasen så vises ÆØÅ.


Kode

<?php
header('Content-type: text/html; charset=UTF-8');

		include 'connect.php';

		mysql_query ("set character_set_results='utf8'"); 
		$sql = "SELECT * FROM nyheter order by `id` desc limit 2";
		$result = $conn->query($sql);

		if ($result->num_rows > 0) {
			while ($row = $result->fetch_assoc()) {
				echo "<h2>" . $row['tittel'] 		. "</h2>";
				echo "<h3>" . $row['undertittel'] 	. "</h3>";
				echo "<hr>";
				echo "<p>"  . $row['tekst']			. "</p>";
				echo "<h4>Skrevet av: " . $row['forfatter']		. "</h4>";
				echo "<br>";

			}

		} else {
			echo "0 results";
		}
?>
Her er list-news.php som skal vise php koden i index fila.
Crimea River
Alec's Avatar
juli 2013
258  98
Prøv å endre encodingen i php filen til UTF-8-BOM om du har notepad++.
Vet ikke hva den gjør, men det har løst slike problemer for meg når jeg har skrevet tekst i selve filen med æ ø å.
april 2011
Det fungerte ikke dessverre =/
aug. 2009
652  78
Har du prøvd noe sånt som f.eks:

Kode

echo '<pre>' . print_r($row, TRUE) . '</pre>';
i loopen din for å se hvordan innholdet er rett etter at du henter det fra databasen?
Musikkprodusent
Affe's Avatar
april 2011
365  57

Kode

mysqli_set_charset($link ,"utf8");
Prøv å legg inn den på siden hvor du skriver ut. Har hatt samme problemet før, og den lille linja pleier å funke.
War room
0xFF's Avatar
april 2011
En løsning/hack er å replace «æ», «ø» og «å» med «&aelig;», «&oslash;», og «&aring;» før du lagrer den i databasen.

Kode

<?php
    $replaceNorChars = array
    (
        "æ" => "&aelig;",
        "ø" => "&oslash;",
        "å" => "&aring;",
        "Æ" => "&AElig;",
        "Ø" => "&Oslash;",
        "Å" => "&Aring;"
    );

    foreach ( $replaceNorChars as $replaceKey => $replaceValue )
    {
        $inputData = str_replace ( $replaceKey, $replaceValue, $inputData );
    }

    // Lagre $inputData i database [...]
?>
Så vidt jeg vet så støtter alle nettlesere &aeling, &oslash og &aring.
Nawesome
Provo's Avatar
nFF Crew
okt. 2006
Sitat av 0xFF Vis innlegg

Kode

<?php
    $replaceNorChars = array
    (
        "æ" => "&aelig;",
        "ø" => "&oslash;",
        "å" => "&aring;",
        "Æ" => "&AElig;",
        "Ø" => "&Oslash;",
        "Å" => "&Aring;"
    );

    foreach ( $replaceNorChars as $replaceKey => $replaceValue )
    {
        $inputData = str_replace ( $replaceKey, $replaceValue, $inputData );
    }

    // Lagre $inputData i database [...]
?>
Vis hele sitatet...
Det er vel like greit å bruke den allerede eksisterende funksjonen "htmlentities()" som gjør om alle spesielle karakterer, inkludert hakeparentes, anførselstegn og annet som kan lage kaos i html-markupen.
april 2011
Hei folkens.

Etter en pause tenkte jeg å teste igjen.
Har nå prøvd ALLE muligheter her nå uten at det gir meg mulighet til å se Æ Ø Å i dette feltet. Får fortsatt bare svarte spørsmålstegn.

Sitat av Nikon01 Vis innlegg
Hei folkens.

Etter en pause tenkte jeg å teste igjen.
Har nå prøvd ALLE muligheter her nå uten at det gir meg mulighet til å se Æ Ø Å i dette feltet. Får fortsatt bare svarte spørsmålstegn.
Vis hele sitatet...

Så ikke siste meldingen fra deg Provo.
htmlentities fungerer

Da er det faktisk i orden. Litt mer jobb enn jeg har gjort tidligere da jeg ALDRI har hatt problemer med ÆØÅ tidligere.

Men takk for hjelpa til alle sammen. Da kan vi presentere jobben i morgen.
feb. 2016
7  4
Fint at du fikk løst det.

Hadde samme problem for en stund tilbake siden da jeg hadde en gammel database hvor tekst hadde blitt lagret i ISO-8859-1. Tror sql-serveren allikevel sendte ut tekst i UTF-8 format til PHP. Det som hjalp meg var å legge inn følgenede i "bootstrapperen":

Kode

mysql_query("SET NAMES 'latin1'");
Du kan også sette dette permanent i sql instillingene.
▼ noen måneder senere ... ▼
aug. 2016
3  1
Jeg har hatt problemer med det samme, og fikk løst det ved å endre encodingen for filen.

Slik fikser man det i notepad++:
http://imgur.com/a/3NEMJ
Watching you
vidarlo's Avatar
nFF Crew
nov. 2005
Sitat av Provo Vis innlegg
Det er vel like greit å bruke den allerede eksisterende funksjonen "htmlentities()" som gjør om alle spesielle karakterer, inkludert hakeparentes, anførselstegn og annet som kan lage kaos i html-markupen.
Vis hele sitatet...
Løsninga er å sette opp alt, inkludert database og editorer til å bruke UTF-8 (eller ISO-8859-15 forsåvidt, men UTF-8 er framtida...). Slike feil er veldig klassiske, og er stortsett alltid resultat av at ein ikkje bruker rett charset gjennomført.

Her er info om korleis du set det om du bruker php+mysqli.
Registrer deg for å skrive svar
Moderer