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. Problema codifica caratteri PHP-MySql
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • G
      g0tt0 User • ultima modifica di

      Problema codifica caratteri PHP-MySql

      Salve a tutti, stavo realizzando un sistema di news per un cliente polacco quando mi sono imbattutto in un problema:
      il database ha codifica utf8_polish_ci e visualizza correttamente gli articoli, ma quando vado a prendere il testo per metterlo sulla mia pagina in php tutti i caratteri speciali sono sostituiti da ? e altri simboli.
      Qualcuno può aiutarmi?

      Grazie.

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • marcocarrieri
        marcocarrieri ModSenior • ultima modifica di

        La codifica html qual'è?

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • G
          g0tt0 User • ultima modifica di

          La codifica della pagina come pure quella del database è UTF8

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • marcocarrieri
            marcocarrieri ModSenior • ultima modifica di

            E anche visualizzando il sorgente si vedono i punti di domanda?

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • B
              bazarop User Attivo • ultima modifica di

              Ciao g0tt0 e benvenuto nel Forum GT,
              il problema purtroppo non è la codifica in html, ma la codifica vera e propria del file.
              I file spesso hanno un BOM (Byte Order Mar) , ovvero 3 byte iniziali che ne stabiliscono la codifica.
              Dovresti rimuovere l'eventuale BOM e ricodificare il file in Utf-8 che probabilmente adesso è in ANSI (codifica standard di windows).

              Per farlo consiglio Notepad++.
              Prova a codificare i file in utf-8 senza BOM e vediamo se hai risolto il problema. (in Notepad++ lo imposti dal tab "Formato").

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • G
                g0tt0 User • ultima modifica di

                In che senso modificare i file? Non contengono testo in polacco perchè viene preso successivamente dal database.

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • B
                  bazarop User Attivo • ultima modifica di

                  Intendo i file PHP, quelli che danno l'output.

                  In testa ai sorgenti dei file PHP, vi sono solitamente 3 Byte(BOM) che generalmente non si vedono.

                  Quei 3 byte vanno rimossi e il file php va codificato in UTF-8.
                  Per rimuovere il BOM, vedi post precedente.

                  Senza BOM e con codifica UTF-8 dovresti risolvere i problemi.

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • G
                    g0tt0 User • ultima modifica di

                    Niente da fare. Continua a mettere un ? su ogni carattere speciale anche se con phpmyadmin riesco a vedere i caratteri speciali. Altre possibili soluzioni?

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • G
                      g0tt0 User • ultima modifica di

                      @marcocarrieri said:

                      E anche visualizzando il sorgente si vedono i punti di domanda?
                      Si, anche il sorgente ha ? ovunque. :gtsad:

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • marcocarrieri
                        marcocarrieri ModSenior • ultima modifica di

                        Riesci a vedere il contenuto salvato dentro il campo mysql?

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • G
                          g0tt0 User • ultima modifica di

                          Allora, dentro il database ho questa stringa (presa a caso):

                          * deformare - deformować-znikesztaącać
                          * educazione-edukacja-nauczanie ,
                          * trasformazione - transformacja -przetwarzanie(przekształcanie,przerabianie),
                          ```Mentre quando tento di fare un echo ottengo:
                          

                          deformare - deformowa?-znikeszta?ca? * educazione-edukacja-nauczanie , * trasformazione - transformacja - przetwarzanie(przekszta?canie,przerabianie)

                          
                          
                          Spero sia chiaro il problema.
                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • B
                            bazarop User Attivo • ultima modifica di

                            Ciao g0tt0,
                            il problema è quasi certamente il BOM e la codifica dei tuoi file php che generano l'output.

                            Su phpmyadmin il problema non si verifica perchè i sorgenti (in php) di phpmyadmin che generano l'output sono codificati correttamente.

                            Se ancora non è chiaro cosa sia il Byte Order Mark (BOM), su wikipedia è spiegato bene: http://it.wikipedia.org/wiki/Byte_Order_Mark
                            Come ti ho già accennato sopra, per la rimozione e la corretta codifica puoi usare Notepad++.
                            Ciao

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            • G
                              g0tt0 User • ultima modifica di

                              Aprendolo con notepad ++ e andando su "Formato" mi dice che è già UTF-8 senza bom.
                              Per sicurezza ho fatto converti in UTF-8 senza bom ma il problema persiste.
                              Ho "smanettato" un po con notepad++ ma non cambia nulla :arrabbiato: .

                              0 Miglior Risposta Ringrazia Cita Rispondi

                                1 Risposta Ultima Risposta
                              • B
                                bazarop User Attivo • ultima modifica di

                                Anche tutti i file che vengono richiamati (include e require) sono in UTF-8 senza bom?

                                0 Miglior Risposta Ringrazia Cita Rispondi

                                  1 Risposta Ultima Risposta
                                • G
                                  g0tt0 User • ultima modifica di

                                  Si.
                                  Può essere un problema della echo()?
                                  C'è un output "grezzo" in php che mi faccia vedere il contenuto della stringa?

                                  0 Miglior Risposta Ringrazia Cita Rispondi

                                    1 Risposta Ultima Risposta
                                  • B
                                    bazarop User Attivo • ultima modifica di

                                    Si, var_dump($variabile)

                                    Altra prova, a questo punto le proviamo tutte:
                                    usa
                                    [PHP] echo utf8_encode($stringa);[/PHP]

                                    se non va prova anche [PHP]echo utf8_decode( $stringa );[/PHP].

                                    0 Miglior Risposta Ringrazia Cita Rispondi

                                      1 Risposta Ultima Risposta
                                    • G
                                      g0tt0 User • ultima modifica di

                                      Anche con utf8_decode e utf8_encode l'output non cambia, però facendo un po di tentativi ho visto che cambiando il tipo di dato (su mysql) da TEXT a BLOB qualcosa migliora, si vedono molti caratteri ma non tutti.

                                      0 Miglior Risposta Ringrazia Cita Rispondi

                                        1 Risposta Ultima Risposta
                                      • G
                                        g0tt0 User • ultima modifica di

                                        Ok risolto cambiando su mysql il tipo di dato da TEXT A BLOB.
                                        Grazie dell'aiuto comunque. :ciauz:

                                        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