Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Umlauten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Problem mit Umlauten

    Hallo,

    ich möchte mir gerne beliebigen Text per squeezeboxSpeak ansagen lassen. Grundsätzlich funktioniert das ganz gut, nur wenn Umlaute im Text sind, werden die codiert und damit unaussprechlich ... selbst für Google ;-)

    Meine Testrule spricht mir gerade im Minutentakt die Außentemperatur und Wettervorhersage für morgen vor:

    Code:
    rule test
    when
        Time cron "0 * * * * ?"
    then
        var String t1 = "Die Aussentemperatur betraegt" + IPWETemp.state.toString
        var String t2 = wg_one_day.state.toString
        
        squeezeboxSpeak("wohnen", t1, 70)
        squeezeboxSpeak("wohnen", t2, 70)
        
    end
    t1 wird korrekt ausgesprochen, die Umlaute habe ersetzt.
    t2 enthält folgenden String
    t2 = "Schauer. Gewitter möglich. Höchsttemperatur 19C. Wind aus NW und wechselhaft. Regenrisiko 70 %"

    Im openhab.log finde ich dann folgende URL, welche per google TTS ausgesprochen werden soll:
    Code:
    http://translate.google.com/translate_tts?tl=de&q=Schauer.%20Gewitter%20mÃB6glich.%20HÃB6chsttemperatur%2019C.%20Wind%20aus%20NW%20und%20wechselhaft.%20Regenrisiko%2070
    Korrekt URL codiert und auch korrekt ausgesprochen würde es mit dieser URL:
    Code:
    http://translate.google.com/translate_tts?tl=de&q=Schauer.%20Gewitter%20m%C3%B6glich.%20H%C3%B6chsttemperatur%2019C.%20Wind%20aus%20NW%20und%20wechselhaft.%20Regenrisiko%2070%20%
    Aus dem 'ö' aus 'möglich' z.B. wird damit 'ÃB6' statt '%C3%'.

    Wie muss meine Rule aussehen, damit diese Codierung korrekt funktioniert?


    Vielen Dank schon mal!

    #2
    Vielleicht bin ich ja etwas ungeduldig ;-)
    Hat keiner eine Idee???

    Kommentar


      #3
      Code:
      import org.openhab.core.library.types.*
      import org.openhab.model.script.actions.*
      import java.net.URLEncoder
      
      rule Morgenansage
      when
          Time cron "0 * * * * ?"
      then
      
          var String t1 = URLEncoder::encode(wg_one_day.state.toString, "[I][U][B]UTF-8[/B][/U][/I]")
          
          squeezeboxSpeak("wohnen", t1, 70)
          
      end
      funktioniert leider auch nicht. Die Umlaute werden leider immer noch falsch codiert.
      UTF-8, UTF-16 und ISO-8859-1 schlagen fehl.

      Hat keiner einen Tipp?

      Kommentar


        #4
        Mir würde jetzt noch sowas
        Code:
        inputtext [COLOR=#339933]=[/COLOR] inputtext.[COLOR=#006633]replace[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000ff]"ä"[/COLOR],[COLOR=#0000ff]"ae"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

        einfallen, in Stringutils gab es auch ein replaceUmlaut glaub ich...
        Kann morgen mal suchen gehen.

        Holger

        Edit: seh gerade dass du erst ein decode der Textzeile brauchst... hmm, ich geh mal schauen, hab das schonmal irgendwo gemacht.

        Edit2: wo kommt denn "wg_one_day" überhaupt her ?

        Kommentar


          #5
          Hi Holger,

          Code:
          String wg_one_day    "[%s]" (gWetter) { http="<[wundergroundCache:3600000:XSLT(wunderground_day1_condition_day.xsl)]" }
          wg_one_day ist die Wettervorhersage von Wunderground. Leider sind da umlaute drin.

          "seh gerade dass du erst ein decode der Textzeile brauchst", was meinst Du damit?

          Gruß Michael

          Kommentar


            #6
            Ich kann es nicht nachstellen, ich mache bisher nichts mit wunderground und den Cache und das XSL habe ich nicht.
            Lt. Google haben aber viele das Problem.
            Ich würde es mal so versuchen, entsprechend mit den anderen Umlauten auch.

            Code:
            var String test
            test = "http://translate.google.com/translate_tts?tl=de&q=Schauer.%20Gewitter%20mÃB6glich.%20HÃB6chsttemperatur%2019C.%20Wind%20aus%20NW%20und%20wechselhaft.%20Regenrisiko%2070"
            println(test)
            test = test.replace("ÃB6","oe")
            println(test)
            Holger

            Kommentar

            Lädt...
            X