Bobby: Probleme Umlaute bei der Ausgabe von Wochentagen auf polnisch

Moin

Ich habe per setlocale(LC_TIME,"pl_PL"); die Ausgabe von Wochentage auf polnisch gesetzt.

Ausgabe funktioniert mit:

<?php  
  // Tageleiste schreiben  
  for($x=0;$x<7;$x++)  
  {  
    $t=mktime(2, 0, 0, $montagmonat, $montagtag+$x, $montagjahr);  
    echo utf8_encode(strftime("%A",$t));  
  }  
?>

Die Ausgabe erfolgt in einer UTF-formatierten Seite. Dementsprechend ist das Charset gesetzt.

Nun erfolgt die Ausgabe folgendermaßen:

poniedzia³ek wtorek ¶roda czwartek pi±tek sobota niedziela

Wenn ich utf8_encode weglasse erscheinen Fragezeichen statt der Sonderzeichen. Es müsste aber folgendermaßen aussehen:

poniedziałek wtorek środa czwartek piątek sobota niedziela

Wie komme ich nun zu der entsprechenden Ausgabe?

Für Tipps wäre ich dankbar.

Gruß Bobby

--
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
### Henry L. Mencken ###
-> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
## Viktor Frankl ###
ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
  1. Moin

    Ich habs selbst gelöst:

    setlocale(LC_TIME,"pl_PL.UTF-8");
                            ^^^^^

    und

    ~~~php <?php
       // Tageleiste schreiben
       for($x=0;$x<7;$x++)
       {
         $t=mktime(2, 0, 0, $montagmonat, $montagtag+$x, $montagjahr);
         echo strftime("%A",$t);
       }
     ?>

      
    bringen das gewünschte Ergebnis.  
      
    Gruß Bobby  
    
    -- 
    -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-  
    ### Henry L. Mencken ###  
    -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-  
    ## Viktor Frankl ###  
      
    ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
    
  2. Hi!

    Ich habe per setlocale(LC_TIME,"pl_PL"); die Ausgabe von Wochentage auf polnisch gesetzt.
        echo utf8_encode(strftime("%A",$t));

    Das kann so nicht funktionieren. utf8_encode() nimmt generell nur ISO-8859-1-kodierte Strings entgegen, die polnischen Sonderzeichen sind darin aber nicht enthalten. Ein setlocale() kann also keine polnischen Wörter (mit Sonderzeichen) liefern, die ISO-8859-1-kodiert sind.

    Wie komme ich nun zu der entsprechenden Ausgabe?

    setlocale() UTF-8-kodierte Strings liefern zu lassen hast du ja schon hinbekommen. Als Notlösung, wenn pl_PL nicht in der UTF-8-Variante zur Verfügung stünde, wäre auch noch mit der iconv- oder recode-Extension eine Konvertierung von ISO-8859-2 nach UTF-8 möglich (wobei iconv gegenüber recode zu bevorzugen ist).

    Lo!

    1. Moin

      Als Notlösung, wenn pl_PL nicht in der UTF-8-Variante zur Verfügung stünde, wäre auch noch mit der iconv- oder recode-Extension eine Konvertierung von ISO-8859-2 nach UTF-8 möglich (wobei iconv gegenüber recode zu bevorzugen ist).

      wie bestimme ich das Vorhandensein eines Langsets? Gibt es tatsächlich Serverkonfigurationen die nicht alle Langsets beinhalten?

      Gruß Bobby

      --
      -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
      ### Henry L. Mencken ###
      -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
      ## Viktor Frankl ###
      ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
      1. Hi!

        wie bestimme ich das Vorhandensein eines Langsets?

        Mit PHP wüsste ich keinen anderen Weg, als es mit setlocale() zu setzen versuchen und dessen Rückgabe auszuwerten. Über die Shell mit locale -a wäre ein Weg, alle aufzulisten.

        Gibt es tatsächlich Serverkonfigurationen die nicht alle Langsets beinhalten?

        Aber natürlich.

        Lo!