bauchidgw: UTF8 oder ISO-8859-1, das ist hier die frag....

hallo

ich hab ne frage auf die ich mir aufgrund fehlender einarbeitung in das thema nicht wirklich helfen kann.

sagen wir ein client übergibt (z.b.: ein grps-handybrowser z.b.: openwave) übergibt einen string in utf8-codierung
ein andere client hingegen in ISO-8859-1

wie erkenn ich ob der string jetzt in utf8 oder iso kodiert ist?

danke für ev. hinweise

mfg
bauchidgw

  1. abend,

    (http://www.php.net/manual/de/function.utf8-decode.php)
    ---zitat---
    I needed a way to found out if the actual string contains
    Unicodechars or not before trying utf8_decode on the string,
    because if it is not you will get the ugly ?-marks.
    To solve this, I made this function which works for me.

    function smart_utf8_decode($in_str)
    {
    // Replace ? with a unique string
       $new_str = str_replace("?", "q0u0e0s0t0i0o0n", $in_str);
    // Try the utf8_decode
       $new_str=utf8_decode($in_str);
    // if it contains ? marks
       if (strpos($new_str,"?")>0)
       {
          // Something went wrong, set new_str to the original string.
          $new_str=$in_str;
       }
       else
       {
          // If not then all is well, put the ?-marks back where is belongs
          $new_str = str_replace("q0u0e0s0t0i0o0n", "?", $new_str);
       }
    return $new_str;
    }
    ---zitat---

    mfg,
    (tanz das)
    Z.N.S.

    --
    <img src="http://www.dmp-web.de/comunicout/neubauten.gif" border="0" alt="">
    1. gott-O-gott
      hab ich das tatsächlich im manual übersehen

      1000end dank und gute nacht

      mfg
      bauchidgw

  2. Hallo bauchidgw,

    ich hab ne frage auf die ich mir aufgrund
    fehlender einarbeitung in das thema nicht
    wirklich helfen kann.

    Dem kann abgeholfen werden.

    wie erkenn ich ob der string jetzt in utf8 oder
    iso kodiert ist?

    So ohne weiteres gar nicht. Du kannst dich mit
    dem Wuerg-Around behelfen, den Z.N.S. gepostet
    hat, aber prinzipiell ist das nicht moeglich. Das
    ist leider eine der Schwaechen von HTTP. Was du
    allerdings tun kannst, ist folgendes: du sendest
    einen sinnvollen Content-Type header
    (Content-Type: text/html; charset=charset) und
    setzt per accept-encoding fest, welche Charsets
    du akzeptierst:

    <form method="GET" accept-charset="ISO-8859-15,UTF-8">

    Per Definition darf dir dann nichts anderes
    geschickt werden als ISO-8859-15 oder UTF-8.
    Danach fuehrst du ein Formular-Feld ein,
    meinetwegen 'cs', das nur ein Entity enthaelt:

    <input type="hidden" name="cs" value="&#255;">

    Dieses Entity ist in ISO-8859-1 bzw. ISO-8859-15
    kodiert "\377". In UTF-8 kodiert ist es
    "\303\277". So kannst du also pruefen, in welchem
    Charset die Sachen geschickt wurden.

    Gruesse,
     CK

    --
    http://cforum.teamone.de/
    http://wishlist.tetekum.de/
    If God had meant for us to be in the Army, we would have been born with green, baggy skin.