Icke-latinska bokstäver i en URL

Diskussion i 'Frågor, support och diskussion' startad av naslundx, 6 sept 2011.

  1. naslundx

    naslundx Infant Droid Medlem

    Blev medlem:
    21 aug 2011
    Inlägg:
    14
    Mottagna gillanden:
    0

    MINA ENHETER

    Jag ska använda mig av Googles online-texttospeech-tjänst för att spela upp text på min app. Tack vare detta forum fick jag veta att man kunde streama en MediaPlayer från

    Kod:
    http://translate.google.com/translate_tts?tl=sv&q="fras"
    till exempel, där fras är det som ska spelas upp. Men jag vill använda mig av flertalet specialtecken (å, ä, ö, kanske ryska, grekiska, etc.) och måste då koda om det så att det passar (s.k. percent-encoding).

    Hur gör man detta? Jag kan ju göra ett antal if-satser för speciella svenska tecken, men detta blir väldigt tjatigt när man kommer upp i flera språk.

    Ska jag använda mig av URLEncoder? Hur då?
     
  2. ozp

    ozp Teen Droid Medlem

    Blev medlem:
    6 maj 2010
    Inlägg:
    250
    Mottagna gillanden:
    31

    MINA ENHETER

  3. naslundx

    naslundx Infant Droid Medlem

    Blev medlem:
    21 aug 2011
    Inlägg:
    14
    Mottagna gillanden:
    0

    MINA ENHETER

    Tack, då gör jag rätt. Problemet är dock att jag kan kan få, t.ex.

    HTML:
    http://translate.google.com/translate_tts?tl=ru&q="%D0%A8%D0%B5%D1%81%D1%82%D1%8C%D0%B4%D0%B5%D1%81%D1%8F%D1%82"
    Från en rysk text. Om jag klistrar in denna i Chrome så hämtar den ljudfilen och spelar upp rätt (testa själv). Men när jag använder denna adress i min MediaPlayer i Android-appen och anropar prepare() får jag en

    java.io.IOException: Prepare failed.: status=0x1

    Varför tolererar inte MediaPlayer denna när det är en fullt fungerande adress i Chrome? Detta var som sagt en rysk text, tar jag en svensk text med å, ä eller ö funkar det som det ska.
     
  4. ozp

    ozp Teen Droid Medlem

    Blev medlem:
    6 maj 2010
    Inlägg:
    250
    Mottagna gillanden:
    31

    MINA ENHETER

    Det verkar vara något fel på strömmen.

    Telefonen lyckas inte läsa något från strömmen och stänger då ner och returnerar ett fel.
     
  5. naslundx

    naslundx Infant Droid Medlem

    Blev medlem:
    21 aug 2011
    Inlägg:
    14
    Mottagna gillanden:
    0

    MINA ENHETER

    Men varför uppstår felet bara på telefonen och inte på datorn..?
     
  6. ozp

    ozp Teen Droid Medlem

    Blev medlem:
    6 maj 2010
    Inlägg:
    250
    Mottagna gillanden:
    31

    MINA ENHETER

    Ska man behöva göra allting åt dig? ;)

    Jag testade att göra en HttpConnection till urlen och servern returnerar ContentLength = 0 för den, alltså att det inte finns någon data att hämta. Kan inte svara på varför det fungerar i browsern men inte i luren. Du får höra med Google.
     
  7. naslundx

    naslundx Infant Droid Medlem

    Blev medlem:
    21 aug 2011
    Inlägg:
    14
    Mottagna gillanden:
    0

    MINA ENHETER

    Haha, nej självklart inte, men jag uppskattar hjälpen!
    Men jag är väldigt nyfiken på varför det funkar på vissa ställen men inte andra och liksom du förbluffad över detta. Hm.
     
  8. Zooklubba

    Zooklubba Android Medlem

    Blev medlem:
    10 jul 2010
    Inlägg:
    6 445
    Mottagna gillanden:
    2 195

    MINA ENHETER

    Kan det vara så att du måste sätta någon property som automatiskt sätt sätts av browsern men inte av HttpConnection? Vettegudarna vad default är. Har inte så mycket tid att kolla. Vet ej om det är någon speciell User-Agent som behövs sättas eller om Google ex ibland exkluderar.

    En gissning är väl att det har något med encodingen att göra.
     
  9. naslundx

    naslundx Infant Droid Medlem

    Blev medlem:
    21 aug 2011
    Inlägg:
    14
    Mottagna gillanden:
    0

    MINA ENHETER

    Gjorde lite ytterliggare efterforskning (det finns visst mer dokumentation om detta vad det gäller iOS än Android) och fann att man måste byta UserAgent.

    iPhone SDK - Google TTS and encoding - Stack Overflow

    Där verkar de spara ner det på telefonen och sedan spela upp det.
    Vet inte om Useragent ligger bakom (även om det skulle förklara varför det funkar på datorn men inte i telefonen).

    Kan man ändra Useragent för mediaplayern?
     
  10. ozp

    ozp Teen Droid Medlem

    Blev medlem:
    6 maj 2010
    Inlägg:
    250
    Mottagna gillanden:
    31

    MINA ENHETER

    Jag har gjort ett test och skickar man user agent "Mozilla/5.0" som i stack overlow-länken så får man tillbaka data. Dessvärre går det inte att ändra useragent i mediaspelaren så du får ladda ner datan själv och sedan skicka det till en MediaPlayer eller AudioTrack för att spela upp det.
     
    naslundx gillar detta.
  11. naslundx

    naslundx Infant Droid Medlem

    Blev medlem:
    21 aug 2011
    Inlägg:
    14
    Mottagna gillanden:
    0

    MINA ENHETER

    I see! Tack så mycket för hjälpen :)