caratteri accentati troncati

caratteri accentati troncati

di Dario Murgia -
Numero di risposte: 5

Buonasera, chiedo aiuto in merito al problema in oggetto, ovvero il troncamento dei caratteri accentati.

la situazione è la seguente:

  • i nostri corsisti sono gestiti in un database esterno SQL 2000, connesso a Moodle tramite un connettore ODBC.
  • quando il corsista si autentica sulla piattaforma Moodle per la prima volta, l'ODBC ne verifica l'esistenza nel nostro database SQL e, se esiste, lo inserisce nel db MYSQL di Moodle

il tutto gira a meraviglia, tranne che per il fatto che tutti i caratteri accentati vengono troncati, ad esempio Mulè diventa Mul, Virzì diventa Virz, e così via...

La problematica si presenta SOLO sui campi importati in Moodle dal DB esterno, infatti saremmo orientati a pensare che il problema sia legato proprio all'ODBC.

Ambiente: Moodle 2.6 (Build: 20131118) - PHP 5.3.6 - DB MYSQL 5.6.10

attendo il vostro supporto e vi ringrazio anticipatamente.

Dario

Media dei voti:  -
In riposta a Dario Murgia

Re: caratteri accentati troncati

di Matteo Scaramuccia -

Ciao Dario,
immagino che tu non stia usando il componente standard di Moodle, http://docs.moodle.org/26/en/External_database_authentication perché il sottosistema lavora con ADOdb e forse lo avresti citato prima che ODBC. In caso affermativo perché non provarlo?

Supponendo che tu non possa condividere il codice che supporta la tua integrazione (magari manca una chiamata a iconv...), non sapendo se le colonne su MSSQL siano nvarchar e non sapendo se Moodle giri sotto Windows, provo a indovinare anche se la vedo dura così alla cieca ammiccante. Direi che sono da controllare il php.ini perché sia correttamente configurato il charset cioè non inserire il Charset nel DSN in odbc_connect e subito dopo la connessione imponi l'UTF-8 (odbc_exec($connection, "SET NAMES 'UTF8'"); odbc_exec($connection, "SET client_encoding='UTF-8'");).

HTH,
Matteo

In riposta a Matteo Scaramuccia

Re: caratteri accentati troncati

di Dario Murgia -

Ciao Matteo,

in effetti ho omesso qualcosa...

  • La nostra piattaforma Moodle gira su un server Windows 2003,
  • le colonne del DB SQL sono nvarchar,
  • il driver del database utilizzato è ODBC  (PLUGIN-ISCRIZIONE-DATABASE ESTERNO - enrol_database | dbtype), qui, oltre ai campi locali e remoti, c'è "Codifica database = utf-8" che comunque è un valore di default...

non ho ben capito cosa devo fare nel php.ini...

devo aggiungere la stringa che mi hai postato?

per quanto riguarda la sezione iconv è tutto remmato: 

[iconv]
;iconv.input_encoding = ISO-8859-1
;iconv.internal_encoding = ISO-8859-1
;iconv.output_encoding = ISO-8859-1

potrebbe dipendere da questo?

grazie ancora!

Dario

In riposta a Dario Murgia

Re: caratteri accentati troncati

di Matteo Scaramuccia -

Ciao Dario,
OK allora usi il plugin di Moodle e quindi non hai scritto codice custom allora non devi considerare il mio post precedente ammiccante.

Dunque, hai già anche provato ad impostare il tipo di database con odbc_mssql che è un driver specializzato per MSSQL?
Il problema è sicuramente legato a problematiche di charset ma se hai installato Moodle correttamente su MySQL utilizzando come character set utf8 e soprattutto una opportuna collation - almeno utf8_unicode_ci - al momento non mi so spiegare perché ti tronchi i caratteri non ASCII se non con il fatto che il valore per la codifica database esterno sia errata (seppure di default, non vale infatti per tutti i setup): potresti provare con ucs-2le.

HTH,
Matteo

In riposta a Matteo Scaramuccia

Re: caratteri accentati troncati

di Dario Murgia -

ciao Matteo,

ti confermo che non stiamo utilizzando codice custom, ma semplicemente i plugin nativi di Moodle Iscrizione-Database Esterno e Autenticazione-Database Esterno.
Oggi abbiamo fatto diverse prove con i driver MSSQL e ODBC_MSSQL (con le opportune modifiche dei parametri per effettuare la connessione ad db esterno), ma il risultato è lo stesso, caratteri accentati troncati!
settando inoltre "ucs-2le" in Codifica database esterno non riesco più a fare il login... (ho provato anche ucs-2).
posso confermarti anche che Moodle è stato installato su MySQL e che tutte le tabelle al suo interno hanno nel campo Collation - utf8_unicode_ci
 
un senso di frustrazione inizia a pervadermi.... help triste
 
grazie ancora e buon weekend
In riposta a Dario Murgia

Re: caratteri accentati troncati

di Matteo Scaramuccia -

Ciao Dario,
l'ultima prova che ti posso suggerire con ODBC - purtroppo non mi è mai capitato di usare l'autenticazione esterna configurata su MSSQL - è di provare con il charset utf-16.
Se non funzionasse anche quello proverei allora a configurare l'uso del driver mssql_n o mssqlnative.

HTH,
Matteo