Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  18 6222
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.
Sist endret av Nikon01; 28. april 2016 kl. 09:45.
jeg skjønner ikke hva du lurer på. Kan du prøve å omformulere deg?
Sist endret av Membranplan; 28. april 2016 kl. 10:28.
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.
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."?
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å?
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.
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.
Sist endret av Nikon01; 28. april 2016 kl. 11:56.
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.
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
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 æ ø å.
Det fungerte ikke dessverre =/
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
Donor

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.
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.
Sist endret av 0xFF; 28. april 2016 kl. 16:37.
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.
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.
Sist endret av Nikon01; 28. april 2016 kl. 22:43. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
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 ... ▼
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
Sist endret av CriminallyCute; 7. august 2016 kl. 21:01. Grunn: glemte kolon
Trigonoceps occipita
vidarlo's Avatar
Donor
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.