Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Problema insolito con caratteri speciali

    Salve a tutti, cercherò di essere più chiaro possibile sul mio problema.
    Ho acquistato un hosting e ci ho buttato dentro tutto il sito che avevo costruito, ovviamente non mi potevo aspettare che tutto funzionasse, qualche problemino era da risolvere; premetto che il mio sito crea un'anteprima di immagine del timbro personalizzato creato dall'user tramite form, grazie alla libreria GD!
    Tutto funziona, anche i caratteri speciali vengono visualizzati, ma non sempre, dipende se il carattere speciale ha davanti a se qualsiasi altro carattere che non sia uno spazio, in questo caso ho in output il carattere quadratino di errore. Ho creato un mini foglio php per farvi capire meglio il problema senza tirare fuori il file originale che è molto piu lungo e quindi inutile al fine del problema.

    Allora, questo è il codice php:
    <?php
    header('Content-Type: image/png; charset=ISO-8859-1');


    $im = imagecreatetruecolor(400, 30);


    $white = imagecolorallocate($im, 255, 255, 255);
    $grey = imagecolorallocate($im, 128, 128, 128);
    $black = imagecolorallocate($im, 0, 0, 0);
    imagefilledrectangle($im, 0, 0, 399, 29, $white);


    $font = 'Fonts/arial.ttf';


    imagettftext($im, 20, 0, 11, 21, $grey, $font, "Questa è una prova");


    imagepng($im);
    imagedestroy($im);
    ?>

    E in output ho la corretta visualizzazione dell'immagine con la relativa scritta:
    https://imagizer.imageshack.us/v2/50...538/oxcfiW.png

    Se invece scrivo "Questa èuna prova" e quindi attacco "èuna" ho la seguente visualizzazione in output:
    https://imagizer.imageshack.us/v2/49...674/S6ppBt.png

    E' un problema del server, si può trovare una soluzione aggiungendo qualche riga di codice? insomma ci capite qualcosa?
    Non sono molto esperto, ho imparato a fare siti web dinamici per necessità e molta passione, tra l'altro grazie proprio ad html.it e colgo l'occasione per ringraziare.
    Grazie per la pazienza, capisco di aver scritto un papiro ma almeno sono sicuro di esser stato esauriente (o almeno credo).

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, potrebbe essere un semplice problema di encoding.
    Prova con
    codice:
    imagettftext($im, 20, 0, 11, 21, $grey, $font, utf8_encode("Questa è una prova") );

  3. #3
    Niente da fare , la cosa peggiora in questo modo, adesso non riconosce proprio i caratteri speciali, in qualsiasi modo li metto mi fa il quadratino di errore.

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Ho provato il tuo codice e da me (Windows in francese) funziona bene.

    .Capture0001.JPG
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Stupendo!!! Grazie mille Santino83_02, ho usato la funzione del 3d levategli le conversioni utf-8--->Html entities; Html entities--->ISO-8859-1 che non servivano, in pratica la funzione converte in ASCII ogni singola lettera della frase in modo indipendente, in particolare fa un'escape dei caratteri con valore decimale superiore a 127 usando "&#$num;", questo rende inconfutabile ogni carattere speciale e quindi, nel mio caso, non vede più come singolo carattere "èu" per poi non riconoscerlo!
    Posto il codice che magari può servire a qualcuno

    <?php
    header('Content-Type: image/png; charset=ISO-8859-1');
    function properText ( $text ){
    $out = "";
    for($i = 0; $i < strlen($text); $i++) {
    $letter = $text[$i];
    $num = ord($letter);
    if($num>127) {
    $out .= "&#$num;";
    } else {
    $out .= $letter;
    }
    }


    return $out;
    }
    $im = imagecreatetruecolor(400, 30);


    $white = imagecolorallocate($im, 255, 255, 255);
    $grey = imagecolorallocate($im, 128, 128, 128);
    $black = imagecolorallocate($im, 0, 0, 0);
    imagefilledrectangle($im, 0, 0, 399, 29, $white);


    $font = 'Fonts/arial.ttf';
    $testo="Questa èuna prova";
    $testo=properText($testo);
    imagettftext($im, 20, 0, 11, 21, $grey, $font, $testo);


    imagepng($im);
    imagedestroy($im);
    ?>

    Grazie a tutti per la pazienza, cmq spero di cambiare hosting più in la xk quella funzione avendo il ciclo for rallenta il mio codice originale tanto più sono le righe da centrare nell'immagine, e la velocità della procedura online potrebbe fare la differenza rispetto la concorrenza.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.