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

    Sito multilingua con arabo. Sostituzione dei caratteri con ?

    Ciao a tutti,

    stò realizzando un sito web in multilingua e mi è stato chiesto di inserire anche la lingua araba. Al di là dei testi che mi verranno forniti ho un problema piuttosto serio con la gestione dei caratteri arabi. Questo è il codice realizzato fin'ora:

    Codice PHP:
    <?php

    /* Script per la selezione della lingua con traduzione letta da file lang.php */

    if (!isset($_GET['lang'])) {
        
    $lang 'ita';
    }
    else {
        
    $lang $_GET['lang'];
    }
    setcookie('lingua'$langtime() + 60 60 24 365 10);
    require(
    "./lang/{$lang}.php");

    /* Modifica degli header a seconda della lingua */

    switch ($lang)
    {
    case 
    'ita':
    print(
    "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>");
    print(
    "<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='EN' lang='EN' dir='ltr'>");
    print(
    "<head>");
    print(
    "<title>XXX</title>");
    print(
    "<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />");
    print(
    "<meta http-equiv='imagetoolbar' content='no' />");
    print(
    "<link rel='stylesheet' href='styles/layout.css' type='text/css' />");
    print(
    "<script type='text/javascript' src='scripts/jquery-1.4.1.min.js'></script>");
    print(
    "<script type='text/javascript' src='scripts/jquery.jcarousel.pack.js'></script>");
    print(
    "<script type='text/javascript' src='scripts/jquery.jcarousel.setup.js'></script>  ");
    print(
    "</head>");
    break;
    case 
    'sar':
    print(
    "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>");
    print(
    "<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='AR' lang='AR' dir='rtl'>"); /* dit rtl imposta lo scorrimento del testo da destra a sinistra */
    print("<head>");
    print(
    "<title>XXX</title>");
    print(
    "<meta http-equiv='Content-Type' content='text/html; charset=windows-1256' />"); /* charset windows 1256 dovrebbe essere l'impostazione per il charset arabo */
    print("<meta http-equiv='imagetoolbar' content='no' />");
    print(
    "<link rel='stylesheet' href='styles/layout.css' type='text/css' />");
    print(
    "<script type='text/javascript' src='scripts/jquery-1.4.1.min.js'></script>");
    print(
    "<script type='text/javascript' src='scripts/jquery.jcarousel.pack.js'></script>");
    print(
    "<script type='text/javascript' src='scripts/jquery.jcarousel.setup.js'></script>  ");
    print(
    "</head>");
    break;
    }  

    ?>
    Se io clicco la mia bandierina italiana mi viene tutto perfetto, se però clicco sulla bandierina araba al posto dei simboli tipici dell'alfabeto arabo mi trovo una serie di punti interrogativi. Qualcuno che si è già trovato in questa situazione mi può dire dov'è l'errore?
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719
    print("<meta http-equiv='Content-Type' content='text/html; charset=windows-1256' />");

    Io userei un UTF-16....

  3. #3
    Ciao e grazie per la risposta. Infatti con UTF-16 funziona alla grande e vedo i simboli dell'alfabeto arabo... Molto bene benissimo!
    Errare è umano, ma per fare veramente casino ci vuole la password di root

  4. #4
    Ciao, pure io dovrei far funzionare un programma web based in lingua araba, ma vedo carattereri di tutti i tipi tranne che l'arabo
    Il database è MS Sql 2008 ed ho impostato la collation su "Arabic_100_CI_AS"

    In database i caratteri si inseriscono in arabo e si visualizzano correttamente.
    Poi quando li leggo da php con una select mssql_query(...) mi stampa tutti punti di domanda.


    Su apache httpd.conf ho aggiunto : AddDefaultCharset UTF-8
    Sul php ini ho messo : default_charset = "UTF-8"
    Sulla pagina ho messo : <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />

    Ma restano sempre i punti di domanda. Ho provato a sostituire tutto con UTF-16 ma cosi facendo mi vengono tutti simboli "simil cinese" anche dove c'è testo con caratteri normali ...forse apache o php non accettano UTF-16.

    Ho letto che il database mssql usa UTF-16. Qualcuno ha qualche idea o esperienza in merito?

    Grazie

  5. #5
    Continuo dicendo quello che ho scoperto.

    Ho provato la stessa cosa con database MYSQL. Ho creato il database impostando la collation : "utf8 - default collation"

    Su apache e php ho lasciato :
    - apache httpd.conf : AddDefaultCharset UTF-8
    - php.ini : default_charset = "UTF-8"

    Prima della query che dovevo fare ho fatto mysql_query ('SET NAMES utf8');

    Così i caratteri arabi vengono visualizzati correttamente.

    Sembra che il problema usando MSSQL sia nel modo in cui comunica php con mssql in quanto non è impostato utf-8.

    Se avete suggerimenti. Nel frattempo cerco ancora e se trovo vi faccio sapere.

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.