Avatar billede flash4u Nybegynder
21. april 2003 - 02:08 Der er 11 kommentarer og
1 løsning

UTF 8 encode af php når alle kendte handlinger ikke virker

Jeg har et hardcore problem med at få importeret en .php fil til et dynamisk tekstfelt i flash mx, hvilket betyder at æøå ikke vises når flashfilmen afspilles.

Jeg har forsøgt alle tricks, som jeg har kunnet finde her på eksperten, hvilket inkluderer:

a indsætte følgende på første frame i flashfilm:
System.useCodepage = true;

b indsætte følgende i php
$headers .= "Content-Type: text/plain; charset=utf-8\r\n";
$headers .= "Content-Transfer-Encoding: 8bit\r\n";

c åbne .php filen i et tekstdokument og gemme som UTF-8 kodning

Yderligere information:
- Jeg har forsøgt både at teste .swf'en som "stand alone" og at publicere, men intet hjælper.

- Jeg har dog tjekket .php filen direkte i browseren og her vises æøå.

- Jeg har også forsøgt at udskifte "text source" i flash, således at mit dynamiske tekstfelt henter fra en almindelig .txt fil - her vises ligeledes æøå.

- Jeg har win XP, IE 6.0, flashplayer 6.0

Håber nogen kan hjælpe - jeg er villig til at give flere point for et brugbart svar. (selvom jeg er ny her på eksperten)
Avatar billede flash4u Nybegynder
21. april 2003 - 02:11 #1
...uddybning: når jeg skriver at jeg har testet .php filen direkte i browseren, mener jeg at jeg har hentet filen udenom .swf'en altså på adressen: www.mitdomaene.dk/fil.php
Avatar billede barklund Nybegynder
21. april 2003 - 08:19 #2
Har du så også brugt UTF8-encode?

print utf8_encode($str);

(Og du har vel husket at sende din $header som header?)

/Barklund
Avatar billede flash4u Nybegynder
21. april 2003 - 14:18 #3
print uf8_encode($message); er forsøgt og uden held.
Jeg har også gennemgået databaten og i php myadmin er står det korrekt (med æøå), så fejlen ligger sikkert ikke her.

Flere bud, for jeg er meget blank. (kan det være andet på serveren/databasetabellen, for jeg mener stadig det er noget i flash, eftersom php'en virker når den åbnes direkte i IE?)

Hvad mener du med at header'en skal sendes som header? (mit php er lidt mangelfuldt)
Avatar billede barklund Nybegynder
21. april 2003 - 14:31 #4
Jeg mener blot, at du skal huske at:

header($header);

Ellers har det ingen effekt :)

Jeg tænker lige over resten, men umiddelbart vil jeg sige, at det plejer at virke...

Har den pågældende font overhovedet æøå? (Pixelfontene fra ML har jo ikke, når de er gratis med videre).
Avatar billede flash4u Nybegynder
21. april 2003 - 14:47 #5
Ja de skulle være sendt, hvis jeg prøver dit forslag siger den nemlig:
Warning: Cannot add header information - headers already sent by...

Vedrørende font, så har jeg prøvet at lade mit dynamiske tekst felt i flash være med fontangivelsen _sans og ligeledes verdana.

I php har jeg:
<?
    function font ($Color = "", $link = false) {
        $headers .= "Content-Type: text/plain; charset=utf-8\r\n";
        $headers .= "Content-Transfer-Encoding: 8bit\r\n";
        if ($Color != "") {
            $Color = " COLOR=\"".$Color."\"";
        }
        if ($link) {
            $style = " STYLE=\"text-decoration:none;\"";
        }
        return "<FONT FACE=\"Verdana,Arial,Helvetica\" ".$Color.$style.">";
    }
?>
        $SQL = "INSERT INTO tabel SET valid = 0, name = '".addslashes($name)."', email = '".addslashes($email)."', message = '".addslashes($message)."'";
        mysql_db_query(db_name, $SQL, db_conn);

        // hent den sidst indsatte tagid
        $tagid = mysql_insert_id(db_conn);
    }
?>
<FORM ACTION="<? print($FileName); ?>" METHOD="post">
    <table border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td> <? print(font()); ?> <?
    // vis tags, som er valide, sorteret med den nyeste øverst.
    $SQL = "SELECT name, email, message FROM tabel WHERE valid = 1 ORDER BY tagid DESC";
    $RS = mysql_db_query(db_name, $SQL, db_conn);
    while ($RSarray = mysql_fetch_row($RS)) {
        // hent værdierne fra rækken og formater dem
        $name = htmlentities(stripslashes($RSarray[0]));
        $email = htmlentities(stripslashes(trim($RSarray[1])));
        $message = htmlentities(stripslashes($RSarray[2]));?>
        <br> <a href="mailto:<? print($email); ?>"><font color="#808080">#<? print($name); ?>#</font></a>
          <p> <br><? print utf8_encode($message); ?>
          <?
    }
    // frigiv hukommelsen
    mysql_free_result($RS);
?>
Avatar billede flash4u Nybegynder
21. april 2003 - 15:06 #6
Jeg har lige prøvet at sætte:
<font face="Verdana, Arial, Helvetica, sans-serif">test æøå</font> foran al php i mit dokument og teksten "æøå" vises oven over al database indholdet.

Hvad gør jeg Barklund?
Avatar billede barklund Nybegynder
21. april 2003 - 15:17 #7
Jeg håber meget, at der er fejl i det PHP-script, som du har pastet ind, for ovenstående giver ingen mening. Desuden sender du aldrig dine headers...

Prøv at give mig stien til php-filen, så jeg kan teste den i browser.
Avatar billede flash4u Nybegynder
21. april 2003 - 15:51 #8
kan desværre give en sti grundet beskyttelse af domæne for firmaet, der endnu ikke ønsker at frigive disse oplysninger.

Jeg har desværre ikke sql database på mit eget webhotel, så det er lidt vanskeligt, blot at flytte den dertil.

Men som skrevet tidligere: gæstebogen virker i en browser. (og hentes også ind i det dynamiske tekstfelt, men blot uden æøå)

- Hvordan skal jeg istedet sende headers?
(og hvad mener du med at ovenstående udklip af php ikke giver mening?)

Har du en simpel .fla, der med garanti kan hente æøå fra .php, som jeg måske kan prøve at ændre og køre i stedet?
Avatar billede flash4u Nybegynder
21. april 2003 - 16:02 #9
damn du har ret - har lige prøvet med noget andet .php jeg havde liggende og der vises æøå sq ok!

Så skal jeg altså bare have løst fejlen i ovenstående volapyk (som nævnt er jeg bestemt ikke en haj til .php, men har bare fået til opgave at lægge noget eksisterende kode ind i flash)

Du kan jo sende et svar, hvis du vil tage nogle af mine point (selvom jeg er ny på eksperten)

Nej spøg til side: Tak for hjælpen du satte det da i den rigtige retning.
Avatar billede barklund Nybegynder
21. april 2003 - 16:09 #10
Et svar...

Ovenstående XML outputter en HTML-side - ikke flash-variabler. Så det skal omskrives til at outputte via flash-metoden med:

var1=value1&var2=value2&...

Så det er 110% forkert!

/Barklund
Avatar billede flash4u Nybegynder
21. april 2003 - 16:18 #11
he he he jeg fik det sq til at virke her på 12. time eller sådan noget.
Jeg slettede funktionen font helt og skrev blot print utf8_encode($message)

- så det var vel egentlig kun 50% forkert? *g*

Du får point for jeg er superlykkelig over at det kører.
Avatar billede barklund Nybegynder
21. april 2003 - 16:28 #12
Tark for det :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester