|
|
(Una versione intermedia di uno stesso utente non è mostrata) |
Riga 1: |
Riga 1: |
− | La libreria '''Libidn''' consente di codificare e decodificare nomi di dominio internazionalizzati, ossia nomi di dominio contenenti uno o più caratteri non ASCII.
| + | #REDIRECT [[Decodificare con le risorse del API di Libidn i nomi di dominio internazionalizzati]] |
− | | |
− | Per poter fruire in Gambas delle risorse della libreria ''Libidn'', bisognerà avere installata e richiamare la libreria dinamica condivisa: ''libidn.so.11.6.11''
| |
− | | |
− | | |
− | Mostriamo un semplice esempio per decodificare un nome di dominio internazionalizzato nel corrispondente etichetta ASCII. Se la decodifica ha successo, La sequenza originale di caratteri non-ASCII e la sequenza risultante ASCII sono etichette equivalenti.
| |
− | Library "libidn:11.6.11"
| |
− |
| |
− | Private Const IDNA_SUCCESS As Integer = 0
| |
− |
| |
− | <FONT Color=gray>' ''int idna_to_ascii_lz (const char *input, char **output, int flags)''
| |
− | ' ''Convert domain name in the locale's encoding to ASCII string.''</font>
| |
− | Private Extern idna_to_ascii_lz(idnin As String, idnout As Pointer, flags As Integer) As Integer
| |
− |
| |
− | <FONT Color=gray>' ''const char *idna_strerror (Idna_rc rc)
| |
− | ' ''Convert a return code integer to a text string.''</font>
| |
− | Private Extern idna_strerror(rc As Integer) As String
| |
− |
| |
− |
| |
− | '''Public''' Sub Main()
| |
− |
| |
− | Dim s As String
| |
− | Dim p As Pointer
| |
− | Dim ris As Integer
| |
− |
| |
− | Print "Immettere dominio codificato (internazionalizzato):"
| |
− | Input s
| |
− |
| |
− | ris = idna_to_ascii_lz(s, VarPtr(p), 0)
| |
− | If ris > IDNA_SUCCESS Then Error.Raise("Decodifica in ASCII fallita (" & ris & "): " & idna_strerror(ris))
| |
− |
| |
− | Print String@(p)
| |
− |
| |
− | '''End'''
| |
− | Fare, ad esempio, la prova con il dominio internazionalizzato: ''www.oυτοπία.δπθ.gr''
| |
− | | |
− | | |
− | | |
− | | |
− | =Riferimenti=
| |
− | * http://www.gnu.org/software/libidn/
| |
− | * http://linux.die.net/man/3/idna_to_ascii_lz
| |
− | * https://it.wikipedia.org/wiki/Nome_di_dominio_internazionalizzato
| |