/ Forside / Teknologi / Udvikling / HTML / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
HTML
#NavnPoint
molokyle 11184
Klaudi 5506
bentjuul 3377
severino 2040
smorch 1950
strarup 1525
natmaden 1396
scootergr.. 1320
e.c 1150
10  miritdk 1110
xml og ø
Fra : leifnel


Dato : 16-11-02 12:02

Jeg har noget xml, der laves fra en database i php.

<tekst><?=$tekst?></tekst>

Men hvis tekst indeholder æøå, får man en character out of range.

Laver jeg <?=htmlentities($tekst)?> får jeg "unknown entity :æ"

Kan man skrive i XML, at æøå er lovligte tegn?

Eller kan man med en enkel php-funktion lave både "æ" og "æ" om til "{"
som er lovligt i xml?

Leif

--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


 
 
Jesper Stocholm (16-11-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 16-11-02 12:01

leifnel wrote :

> Jeg har noget xml, der laves fra en database i php.
>
> <tekst><?=$tekst?></tekst>
>
> Men hvis tekst indeholder æøå, får man en character out of range.
>
> Laver jeg <?=htmlentities($tekst)?> får jeg "unknown entity :æ"
>
> Kan man skrive i XML, at æøå er lovligte tegn?
>
> Eller kan man med en enkel php-funktion lave både "æ" og "æ" om til "{"
> som er lovligt i xml?

du skal specificere dine XML-datas "encoding". Dette gøres fx som

<?xml version="1.0" encoding="iso-8859-1" ?>
<root>
   <danishChars>æøå</danishChars>
</root>



--
Jesper Stocholm
http://stocholm.dk
Ny FAQ for dk.edb.internet.webdesign.serverside.asp
se http://asp-faq.dk

leifnel (16-11-2002)
Kommentar
Fra : leifnel


Dato : 16-11-02 23:25

"Jesper Stocholm" skrev d. 16-11-02 12:01 dette indlæg :
> leifnel wrote :
>
> > Jeg har noget xml, der laves fra en database i php.
> >
> > <tekst><?=$tekst?></tekst>
> >
> > Men hvis tekst indeholder æøå, får man en character out of range.
> >
> > Laver jeg <?=htmlentities($tekst)?> får jeg "unknown entity :æ"
> >
> > Kan man skrive i XML, at æøå er lovligte tegn?
> >
> > Eller kan man med en enkel php-funktion lave både "æ" og "æ" om til
"{"
> > som er lovligt i xml?
>
> du skal specificere dine XML-datas "encoding". Dette gøres fx som
>
> <?xml version="1.0" encoding="iso-8859-1" ?>
> <root>
>    <danishChars>æøå</danishChars>
> </root>
>

Men hvordan gør man det i php?
Jeg laver xml'en således:
$doc = domxml_new_xmldoc('1.0');

Men dette kan man ikke, selvom det ville være logisk.
$doc->set_attribute('encoding','ISO-8859-1');

Man kan godt sætte attributter på en node:
$root = $doc->add_root('members');
$contr=$member->new_child('contribution','3400');
$contr->set_attribute('currency','dollar');

Det giver <contribution currency="dollar">3400</contribution>

Så hva så, hva?

--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


Charlotte Gørtz (17-11-2002)
Kommentar
Fra : Charlotte Gørtz


Dato : 17-11-02 02:02

leifnel wrote in dk.edb.internet.webdesign.html:
> > leifnel wrote :
[klip]
> >
> > > Kan man skrive i XML, at æøå er lovligte tegn?
> > >
> > > Eller kan man med en enkel php-funktion lave både "æ" og "æ" om
til
> "{"
> > > som er lovligt i xml?
[klip]

Hej

Jeg ved ikke ret meget om hverken php eller xml, men w3 school har
skrevet noget om encoding i xml, måske du kan bruge det:
http://www.w3schools.com/xml/xml_encoding.asp

Charlotte





--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Thorbjoern Ravn Ande~ (17-11-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 17-11-02 08:45

"leifnel" <leifnel.news@kandu.dk> writes:

> Men hvordan gør man det i php?
> Jeg laver xml'en således:
> $doc = domxml_new_xmldoc('1.0');
>
> Men dette kan man ikke, selvom det ville være logisk.
> $doc->set_attribute('encoding','ISO-8859-1');

Det er ikke attributter på <?xml..?> instruktionen.

Det lader ikke til at denne eksperimentielle funktion tillader dedt du
gerne vil. Et alternativ er at sende dine strenge igennem en funktion
der omdanner ISO-Latin-1 tegn til de tilsvarende UTF-8 tegn.

Den skal du måske skrive selv. Det er ikke slemt.
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn

leifnel (17-11-2002)
Kommentar
Fra : leifnel


Dato : 17-11-02 10:23

"Thorbjoern Ravn Andersen" skrev d. 17-11-02 08:45 dette indlæg :
> "leifnel" <leifnel.news@kandu.dk> writes:
>
> > Men hvordan gør man det i php?
> > Jeg laver xml'en således:
> > $doc = domxml_new_xmldoc('1.0');
> >
> > Men dette kan man ikke, selvom det ville være logisk.
> > $doc->set_attribute('encoding','ISO-8859-1');
>
> Det er ikke attributter på <?xml..?> instruktionen.

Man skulle da ellers tro, at encoding='...' var en attribut.
Og jeg kan ikke engang finde hvor den er i sourcen; så ville jeg
patche...

>
> Det lader ikke til at denne eksperimentielle funktion tillader dedt du
> gerne vil. Et alternativ er at sende dine strenge igennem en funktion
> der omdanner ISO-Latin-1 tegn til de tilsvarende UTF-8 tegn.
>
> Den skal du måske skrive selv. Det er ikke slemt.

Jeg fandt et sted at lave utf8_encode(htmlspecialchars($tekst))

Så virker det, men det er lidt ærgeligt at skulle have det overhead,
hvis der kommer mange hits på siderne.

Leif
> --
> Thorbjørn Ravn Andersen
> http://unixsnedkeren.dk/ravn

--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


Thorbjoern Ravn Ande~ (17-11-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 17-11-02 10:49

"leifnel" <leifnel.news@kandu.dk> writes:

> > Det er ikke attributter på <?xml..?> instruktionen.
>
> Man skulle da ellers tro, at encoding='...' var en attribut.

Jamen, det er det altså ikke.

Det er en "Processing Instruction"
(http://www.w3.org/TR/REC-xml#sec-pi) og det er noget andet. SÅ vidt
jeg forstår :)

> Så virker det, men det er lidt ærgeligt at skulle have det overhead,
> hvis der kommer mange hits på siderne.

Tjah. Til gengæld virker dine sider uanset om du opgraderer eller
ej. Mål eventuelt for at se hvor slemt det er - jeg tror det drukner
i det øvrige overhead. Databaser plejer at trække tænder ud.
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn

Jesper Stocholm (17-11-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 17-11-02 12:20

Thorbjoern Ravn Andersen wrote :

> "leifnel" <leifnel.news@kandu.dk> writes:
>
>> > Det er ikke attributter på <?xml..?> instruktionen.
>>
>> Man skulle da ellers tro, at encoding='...' var en attribut.
>
> Jamen, det er det altså ikke.
>
> Det er en "Processing Instruction"
> (http://www.w3.org/TR/REC-xml#sec-pi) og det er noget andet. SÅ vidt
> jeg forstår :)

og man kunne også argumentere for, at selve "elementet" <?xml ... ?>
heller ikke er at regne for "ren" xml - det er i hvert fald ikke
afsluttet. Jeg plejer personligt at opfatte <?xml?> som en slags headere,
der afgør hvordan den "modtagende" applikation skal behandle indkommende
data på - ganske som det er tilfældet med http-requests etc.



--
Jesper Stocholm
http://stocholm.dk
Ny FAQ for dk.edb.internet.webdesign.serverside.asp
se http://asp-faq.dk

leifnel (17-11-2002)
Kommentar
Fra : leifnel


Dato : 17-11-02 15:32


> > Så virker det, (utf8_encode(htmlentities($text)) men det er lidt
ærgeligt at skulle have det overhead,
> > hvis der kommer mange hits på siderne.
>
> Tjah. Til gengæld virker dine sider uanset om du opgraderer eller
> ej. Mål eventuelt for at se hvor slemt det er - jeg tror det drukner
> i det øvrige overhead. Databaser plejer at trække tænder ud.

Man kunne jo bare konvertere indholdet i databasen, når den blev
opdateret.

Man kunne forøvrigt også generere statiske sider ud fra database/XML og
XLS'en, når man "udgav" siderne.
Så dynamiske behøver de heller ikke være...

Leif
> --
> Thorbjørn Ravn Andersen
> http://unixsnedkeren.dk/ravn

--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


Kim Bach Petersen (17-11-2002)
Kommentar
Fra : Kim Bach Petersen


Dato : 17-11-02 12:27

> Men hvis tekst indeholder æøå, får man en character out of range.

Encoding er måden at gøre det på, men alternativt kan du bruge tegnkoder:

æ -&#230;
Æ - &#198;
ø - &#248;
Ø - &#216;
å - &#229;
Å - &#197;

Kim
--
· www.kensho.dk · psykologi og spiritualitet ·



Thorbjoern Ravn Ande~ (17-11-2002)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 17-11-02 13:47

"Kim Bach Petersen" <kim@kensho.dk> writes:

> Encoding er måden at gøre det på, men alternativt kan du bruge tegnkoder:

Tegnkoderne er Unicodeværdierne, som er sammenfaldende med ISO-Latin-1
i det interval. En sådan omformerfunktion er derfor ikke svær at lave :)

--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste