Gå til innhold

Problemer med æøå / skandinaviske tegn? Klikk her!


Gjest Slettet-rXRozPkg

Anbefalte innlegg

  • 8 måneder senere...
Videoannonse
Annonse

Sliter med å få alt på norsk.

Side med skript er som følger:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Sidetittel</title>
</head>

<body>

<p>Overskrift<br />
<?php
$dager = floor(time() / 86400); // 60 * 60 * 24 = 86400
$filnr = ($dager % 42) + 1; //0 = igår, 1 = idag, 2 = imorgen

echo "<b>I dag ";
echo strftime("%A %d/%B/%G");
echo "</b><br>";
echo readFromFile($filnr);


echo "<br><b>";
echo "I morgen, ";
echo strftime("%A %d/%B/%G", time()+86400);
echo "</b><br>";
echo readFromFile($filnr+1);

echo "<br><b>";
echo "Overimorgen, ";
echo strftime("%A %d/%B/%G", time()+172800);
echo "</b><br>";
echo readFromFile($filnr+2);


function readFromFile($number){ 

       if($number < 43)
       {
               $number = str_pad($number, 2, "0", STR_PAD_LEFT);
               $textfile1 = "dager/mappe1/{$number}.php";
			$textfile2 = "dager/mappe2/{$number}.php";
			include $textfile1;
			include $textfile2;

       }
}
?>
</body>
</html>

Filene som importeres til slutt er txt-filer.

 

Jeg klarer IKKE å få alt på norsk

Enten

* så vises innholdet i txt-filene med æøå feil

* så vises det en "byte order mark"

* ukedagen i strftime-skriptet vises på engelsk

 

Jeg mener å ha testet alle mulige måter, men klarer ikke å få alt på norsk.

Lenke til kommentar

Prøver meg på hjelp her, jeg også...

 

jeg har flyttet en phpbb3 install fra en server hos one.com til en ny server (nytt domene også). Jeg zippet gamle filer, tok backup av database og lastet opp på ny server. Derfra to den nye hostens support å gjorde resten. Alt ser ut til å virke. De som ikke har brukernavn som inneholder æøå, kan logge seg inn, men jeg som har admin, har en ø i mitt brukernavn, og kommer meg ikke inn. Alle ÆØÅ blir bare kråketegn. "Ø" blir "ø", "å" blir "Ã¥" og "Æ" blir "æ".

 

Jeg har sammenliknet innstillinger i på ny og gammel server i phpmyadmin og det ser likt ut... MySQL-tegnsett: UTF-8 Unicode (utf8)

 

Er det noen som har tips om hva jeg kan gjøre?

AØÅ funket fint på den gamle serveren.

 

Oppdatert: etter å ha skiftet username i phpmyadmin, klarer jeg å logge på. Når jeg skriver nye poster, funker æøå helt fint, men gamle poster har fortsatt kråketegn.

 

Er eneste måte da å laste ned hele mysql databasen for så å "search and replace" alle kråketegn med æøå?

Endret av FrozenFish
Lenke til kommentar
  • 4 måneder senere...
  • 1 måned senere...

HODEFIL:

<?php

function replace_outside_tags($search, $replace, $txt){

$strlen = strlen($txt);

$inTag = false;

for($i = 0; $i < $strlen; $i++){

if(!$inTag && $txt[$i] == '<') $inTag = !$inTag;

if(($inTag && ($txt[$i]=='>'))){

$inTag = !$inTag;

}

if(!$inTag){

if(substr($txt, $i, strlen($search)) == $search){

$txt = substr($txt, 0, $i).$replace.substr($txt, $i+strlen($search));

$strlen = strlen($txt);

}

}else continue;

}

return $txt;

}

?>

 

 

FOTFIL:

<?php

$txt = ob_get_clean();

$search = array("æ", "ø", "å");

$replace = array("æ", "ø", "å");

 

if(is_array($search) && is_array($replace) && count($search) == count($replace)){

$n = count($search);

 

for($i = 0; $i < $n; $i++)

$txt = replace_outside_tags($search[$i], $replace[$i], $txt);

}else $txt = replace_outside_tags($search, $replace, $txt);

 

echo $txt;

?>

Lenke til kommentar

Hvordan urlencode med javascript? Saken er at url'en skal hentes med php $_GET. Har prøvd med en funksjon jeg fant på et tilfeldig forum:

 

function urlencode(str) {
return escape(str).replace(/\+/g,'%2B').replace(/%20/g, '+').replace(/\*/g, '%2A').replace(/\//g, '%2F').replace(/@/g, '%40');
}

, det gikk fint å sende mellomrom og linjeskift over querystringen, men æ,ø,å fikk den problemer med.

 

 

Edit: tror encodeURI() er løsningen.

Endret av MikkelRev
Lenke til kommentar
  • 6 måneder senere...

Prøver å sortere en array med navn på land.

Først prøvde jeg:

asort($countryNames);

Men da kom Åland før Østerrike og Øst-Timor.

Så prøvde jeg meg med:

setlocale(LC_COLLATE, "no_NO");
usort($countryNames, "strcoll");

Men da kommer alle tre landene blant landene på A.

Hvordan sorterer jeg et array som inneholder ord med æ, ø og å?

Lenke til kommentar
  • 4 uker senere...

Jeg er stuck...

 

Jeg har prøvd alt mulig rart, men får ikke dette til å fungere. Hvis man setter tegnsett til iso-8859-1 så vises Mysql-data riktig, men php/html blir feil. Med utf-8 så blir php/html riktig, men mysql feil. Noen som har noen tips? Jeg har som sagt prøvd i mangfoldige timer uten at jeg kommer noe lenger så nå er jeg rimelig lei

Endret av frodrikk
Lenke til kommentar

Jeg er stuck...

 

Hvis dere tar en titt på http://oyvind.dyndns...ng/eksempel.php

 

Jeg har prøvd alt mulig rart, men får ikke dette til å fungere. Hvis man setter tegnsett til iso-8859-1 så vises Mysql-data riktig, men php/html blir feil. Med utf-8 så blir php/html riktig, men mysql feil. Noen som har noen tips? Jeg har som sagt prøvd i mangfoldige timer uten at jeg kommer noe lenger så nå er jeg rimelig lei

 

Har du satt tegnsettet i php?

Sett tegnsettet i php og html til iso-x-x. Ikke noe mer. Det holder, så lenge tegnene ser normale ut i databasen (via f.eks phpmyadmin), og du bruker latin1 tegnsett på tabellene. Husk at php-filen også må være lagret med rett tegnkoding.

 

PHP (øverst i alle filer/hovedfilen):
header('Content-type: text/html; charset=ISO-8859-15');

HTML:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15">

Lenke til kommentar

Jeg er stuck...

 

 

 

Jeg har prøvd alt mulig rart, men får ikke dette til å fungere. Hvis man setter tegnsett til iso-8859-1 så vises Mysql-data riktig, men php/html blir feil. Med utf-8 så blir php/html riktig, men mysql feil. Noen som har noen tips? Jeg har som sagt prøvd i mangfoldige timer uten at jeg kommer noe lenger så nå er jeg rimelig lei

 

Har du satt tegnsettet i php?

Sett tegnsettet i php og html til iso-x-x. Ikke noe mer. Det holder, så lenge tegnene ser normale ut i databasen (via f.eks phpmyadmin), og du bruker latin1 tegnsett på tabellene. Husk at php-filen også må være lagret med rett tegnkoding.

 

PHP (øverst i alle filer/hovedfilen):
header('Content-type: text/html; charset=ISO-8859-15');

HTML:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15">

 

Nå er det satt i php og html til iso.8859-1 og jeg satt databasen til latin_1_danish eller noe lignende, men da dukker jo problemet opp som jeg beskrev. Nå er det php/html som er FU mens mysql er good. Jeg prøvde å sjekke encoding av filen, men ble ikke så mye klokere:

 

# file -bi test.php

text/html

 

EDIT: Glem det, jeg som ikke sjekket godt nok her. Prolemet lå i kodingen i filen ;)

Endret av frodrikk
Lenke til kommentar
  • 2 måneder senere...

Jeg støtte bort i et problem hvor jeg skulle søke i bibliotekbasen etter ordet "brønn". ÆØÅ er ofte krevende for utviklere, og her hjalp hverken urlencode(), utf8_encode(), utf8_decode() eller noe annet. Jeg trengte hente inn dette xml-resultatet på et søk i DOMDocument load():

 

http://sru.bibsys.no/search/biblio?version=1.2&operation=searchRetrieve&startRecord=1&maximumRecords=10&query=æøå%20sortby%20sortdate&recordSchema=dc

 

Jeg fant tilfeldigvis ut at hvis jeg kopierte adressen fra Chrome sin adressebar, fikk jeg dette resultatet:

 

http://sru.bibsys.no/search/biblio?version=1.2&operation=searchRetrieve&startRecord=1&maximumRecords=10&query=%C3%A6%C3%B8%C3%A5%20sortby%20sortdate&recordSchema=dc

 

Her er noe kode for å fikse opp i problemet, lage søket og hente det inn i DOM:

 

 

$searchTerm = "brønn";

//sett tegn som jeg fikk i Chrome copy paste metoden min
$liten_ae = "%C3%A6";
$liten_oe = "%C3%B8";
$liten_aa = "%C3%A5";
$stor_ae = "%C3%86";
$stor_oe = "%C3%98";
$stor_aa = "%C3%85";


//erstatt alle æøåÆØÅ
$searchTermForScript = str_replace("æ", $liten_ae, $searchTermForScript);
$searchTermForScript = str_replace("ø", $liten_oe, $searchTermForScript);
$searchTermForScript = str_replace("å", $liten_aa, $searchTermForScript);
$searchTermForScript = str_replace("Æ", $stor_ae, $searchTermForScript);
$searchTermForScript = str_replace("Ø", $stor_oe, $searchTermForScript);
$searchTermForScript = str_replace("Å", $stor_aa, $searchTermForScript);

$queryString = "http://sru.bibsys.no/search/biblio?version=1.2&operation=searchRetrieve&startRecord=1&maximumRecords=10&query=" . $searchTermForScript . "%20sortby%20sortdate&recordSchema=dc";
//last inn i dom 
$dom = new DOMDocument();
$dom->load($queryString);

Endret av poande05
Lenke til kommentar

Det du gjør der er akkurat det samme som urlencode gjør.

 

// Hvis 'æøå' er utf-8 encodet:
var_dump(urlencode('æøå') == '%C3%A6%C3%B8%C3%A5%');

 

Det funker bare hvis du lagrer filene dine i utf-8, hvis du lagrer filene dine i iso-8859-1 må du først bruke utf8_encode:

// Hvis 'æøå' er iso-8859-1 encodet:
var_dump(urlencode(utf8_encode('æøå')) == '%C3%A6%C3%B8%C3%A5%');

Lenke til kommentar

Det du gjør der er akkurat det samme som urlencode gjør.

 

// Hvis 'æøå' er utf-8 encodet:
var_dump(urlencode('æøå') == '%C3%A6%C3%B8%C3%A5%');

 

Det funker bare hvis du lagrer filene dine i utf-8, hvis du lagrer filene dine i iso-8859-1 må du først bruke utf8_encode:

// Hvis 'æøå' er iso-8859-1 encodet:
var_dump(urlencode(utf8_encode('æøå')) == '%C3%A6%C3%B8%C3%A5%');

 

Takk :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...