Autore Topic: Caratteri speciali unicode, non tutti vengono letti  (Letto 895 volte)

Offline Marmar

  • Gamberetto
  • *
  • Post: 10
    • Mostra profilo
Caratteri speciali unicode, non tutti vengono letti
« il: 17 Luglio 2011, 16:26:24 »
Riciao a tutti  :ciao:
visto che l'ultima volta avete risolto un mio problema in meno di un'ora, mi affido nuovamente alla vostra esperienza  ;D

nel mio form ho una textbox che dovrebbe essere in grado di leggere caratteri degli alfabeti antichi (latino arcaico, etrusco, greco, lineare B per esempio). Ho cercato in questo forum sia qui:

http://www.gambas-it.org/smf/index.php?topic=583.msg5777;topicseen#msg5777

che qui:

http://www.gambas-it.org/smf/index.php?topic=442.msg3943;topicseen#msg3943

il problema è che i metodi qui usati non leggono alcuni unicode, mentre altri sì. Posto i codici che ho provato fin'ora:

Codice: [Seleziona]
unicode.Text = String.Chr(66304) 'questo carattere che è corsivo antico, non si vede: al suo posto vengono i due rettangolini vuoti
unicode.Text &= String.Chr(935) 'questo carattere, che è greco, si vede benissimo

ho provato anche a impostare come font di base del mio progetto uno che è sicuramente in grado di leggere entrambi i caratteri, eppure il primo non si vede. So che esiste anche String.Code(String as String), che vuole il UTF-8, ma ogni tentativo di usare questo comando mi dava errore, più esattamente non riesco a capire cosa va nelle parentesi tonde.

P.S. domanda extra: siccome vorrei avere gambas aggiornatissimo ma ben funzionante, conviene passare a gambas3 o è meglio aspettare che sia stabile? Se sì posso importare il progetto senza problemi?

Gratias uobis

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.721
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Caratteri speciali unicode, non tutti vengono letti
« Risposta #1 il: 02 Dicembre 2011, 01:30:39 »
unicode.Text = String.Chr(66304) 'questo carattere che è corsivo antico, non si vede: al suo posto vengono i due rettangolini vuoti

...a me questo codice, invece, mi restituisce semplicemente una "a" maiuscola: A .
Ad ogni modo, effettivamente non tutti i caratteri previsti da Unicode vengono mostrati. Ciò probabilmente è dovuto dal fatto che la quantità di caratteri in Unicode viene incrementata di anno in anno con nuove versioni; e ciò lascia pensare che i sistemi non riescono ad aggiornare la versione Unicode implementata.

So che esiste anche String.Code(String as String), che vuole il UTF-8, ma ogni tentativo di usare questo comando mi dava errore, più esattamente non riesco a capire cosa va nelle parentesi tonde.
Va inserito il carattere, di cui vuoi conoscere il codice Unicode. Esempio: string.code("à")

Altro esempio:
Codice: gambas [Seleziona]

Public Sub Button1_Click()

  Dim a As String
  Dim b As Integer

 ' La seguente funzione restituisce il carattere "Delta" maiuscolo:
    a = String.Chr(&0394)

 ' La seguente funzione restituisce il codice esadecimale Unicode del Delta maiuscolo,
 ' ...dal quale siamo partiti (&0394):
    b = String.Code(a)

 ' mostra il carattere "Delta" maiuscolo:
  Print a

' mostra il codice esadecimale Unicode del Delta maiuscolo:
  Print Hex(b)

End


Per un'ampia panoramica sui codici UNICODE: http://www.unicode.org/charts/ .

Vedi anche la Wiki: http://www.gambas-it.org/wiki/index.php/Uso_di_Unicode_con_gli_oggetti_di_testo



Gratias uobis
Et tibi.
« Ultima modifica: 11 Agosto 2012, 02:02:08 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »