Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. Problemi con set di caratteri via php
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • D
      deantenea User • 28 giu 2007, 08:57 ultima modifica di

      Problemi con set di caratteri via php

      Ciao a tutti.
      problemino con PHP che sto tentando di risolvere da un po' di tempo:

      ho uno script che si connette via fsockopen ad un file rss e mi restituisce il feed.
      Quando visualizzo questi dati alcuni caratteri speciali (l'apice fatto con Alt+096 e le doppie virgolette) vengono sostituiti dal punto interrogativo (?).
      Ho fatto svariate prove ma da PHP non sono riuscito in nessun modo a leggere un file esterno che contenga questi caratteri e visualizzarli correttamente in output.

      Mai capitato qualcosa di simile?

      Il sito per cui li sto usando è questo:
      http://www.blogfug.it

      Grazie e a presto,
      Sergio

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
        Caricamento altri post
        Rispondi
        • Topic risposta
        Effettua l'accesso per rispondere
        • Da Vecchi a Nuovi
        • Da Nuovi a Vecchi
        • Più Voti
         

      • D
        diliberto User • 28 giu 2007, 11:17 ultima modifica di

        Ciao Deantenea,
        la problematica da te descritta è tipica di una incompatibilità nel set di caratteri utilizzato. Assicurati che il feed di input e quello di output abbiano la medesima codifica (iso-8859-1, utf-8, ecc.).

        Cordialmente
        Alessio

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • D
          deantenea User • 28 giu 2007, 12:44 ultima modifica di

          Sì, il problema è di codifica dei caratteri, però ho provato a codificarli sia in utf8 che in iso, ma i risultati non mi soddisfano.

          nonostante faccia il riconoscimento automatico del charset del feed di origine in output ha comunque problemi.
          In parte dipende dal fatto che nonostante molti feed abbiano un charset dicharato utf8, poi usano dei caratteri iso e viceversa.

          Dovrei capire se posso risolvere i casini che fanno quelli che creano i feed.

          Ciao,
          Sergio

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • D
            diliberto User • 28 giu 2007, 14:47 ultima modifica di

            Puoi postarci un esempio per comprendere al meglio il problema?
            Url del feed importato come input e tua pagina di output.

            Cordialmente
            Alessio

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • donbairo
              donbairo User Attivo • 28 giu 2007, 23:42 ultima modifica di

              Ciao
              io credo che l'unica soluzione sia quella di filtrare tramite php la stringa di lettura del RSS in questo modo:

              $articolonuovo = str_replace("`","'",$articolo);

              come vedi sostituisce ` con ' e questo filtro va bene per questo carattere

              Dovrai mettere tanti filtri quanti i caratteri che ti sballa ma non sono poi tantissimi credo.

              Spero di averti aiutato

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • D
                deantenea User • 29 giu 2007, 10:07 ultima modifica di

                Il codice sarebbe circa 800 righe...
                La parte del codice che legge i dati è questa:

                [PHP]if($fp = fsockopen(
                $host,
                $port,
                $errno,
                $errstr,
                $this->_fp_timeout
                ))
                {
                return true;
                }

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • donbairo
                  donbairo User Attivo • 29 giu 2007, 10:26 ultima modifica di

                  Quella è solo la parte che apre la connessione

                  tu devi cercare la stringa che contiene il testo del feed che ti riporta in schermo, da qualche parte c'è

                  ma non prendere questo mio post per "oro colato", ho pensato che questa era una soluzione valida perchè in molti casi l'ho usata per i miei intopamenti.

                  Ciao

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • D
                    deantenea User • 29 giu 2007, 11:05 ultima modifica di

                    Ehm...
                    l'avevo scritta... mi sa che per sbaglio l'ho tolta dal post.

                    Riscrivo bene il codice:

                    if($fp = fsockopen(
                    $host,
                    $port,
                    $errno,
                    $errstr,
                    $this->_fp_timeout
                    ))
                    {
                    return true;
                    }

                    	while ( $data = fread($fp, $this->maxlength) ) {
                    	    $results .= $data;
                    		
                    	    if (
                    	        strlen($results) > $this->maxlength ) {
                    	        break;
                    	    }
                    	} 
                    
                    
                    		$fp = fopen("prova.txt","w"); 
                    		fputs ($fp,$results); 
                    

                    // le due righe precedenti le ho aggiunto per vedere cosa scrive

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • D
                      deantenea User • 29 giu 2007, 11:09 ultima modifica di

                      Mi taglia sempre una parte del post...

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • donbairo
                        donbairo User Attivo • 29 giu 2007, 12:58 ultima modifica di

                        Beh comunque su $results dovresti avere il testo, è un po poco per capire come funziona ma puoi fare una prova.

                        Guarda se poi quella variabile è utilizzata per visualizzare il testo.

                        Io credo che da qualche parte hai un echo o un print, quello che passa da queste istruzioni e quello che dovresti filtrare.

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        Caricamento altri post
                        Rispondi
                        • Topic risposta
                        Effettua l'accesso per rispondere
                        • Da Vecchi a Nuovi
                        • Da Nuovi a Vecchi
                        • Più Voti