Converti UTF-8 String ASP classico nel database SQL

Quindi stavo avendo un problema con la conversione di caratteri francesi correttamente. Fondamentalmente, ho un modulo che invia dati a un database SQL. Quindi, su un’altra pagina, i dati di questo DB vengono recuperati e visualizzati all’utente. Ma i dati (stringhe) venivano visualizzati con caratteri corrotti ed errati perché l’input nel modulo sull’altra pagina era in francese. Ho risolto questo problema utilizzando la seguente funzione che converte una stringa nel set di caratteri corretto. TUTTAVIA, ovviamente la soluzione migliore è convertirla PRIMA e poi inviarla al database. Ora ecco il codice per convertire una stringa recuperata da un DB nel set di caratteri appropriato:

Function ConvertFromUTF8(sIn) Dim oIn: Set oIn = CreateObject("ADODB.Stream") oIn.Open oIn.CharSet = "WIndows-1252" oIn.WriteText sIn oIn.Position = 0 oIn.CharSet = "UTF-8" ConvertFromUTF8 = oIn.ReadText oIn.Close End Function 

Ho ottenuto questa funzione da qui: ASP classico – Come convertire una stringa UTF-8 in UCS-2?

Ora la mia domanda è, quale funzione devo usare per convertire le stringhe in anticipo e poi inviarle al database, in modo che quando le recupero, saranno sempre buone?

Provato il metodo di Paul:

Quindi c’è la pagina 1 e la pagina 2. La pagina 1 contiene un modulo che, una volta inviato, invia la stringa al DB che viene poi richiamata nella pagina 2. Ho provato la soluzione di Paul rimuovendo la funzione ConvertFromUTF8 e lasciandola come era prima (ha restituito i personaggi di Wierd mangolian). Dopo di ciò, ho aggiunto la seguente riga in cima alla pagina 1 e alla pagina 2.

  

Ho anche la seguente su entrambe le pagine:

 Response.CodePage = 65001 Response.CharSet = "UTF-8" 

Ma non ha funzionato 🙁

Modifica: funziona !, grazie mille a tutti per il vostro aiuto! Tutto quello che dovevo fare era aggiungere “CodePage = 65001” in cima a Pagina 3 (di cui non avevo nemmeno parlato), dove stava accadendo la scrittura sulla parte DB.

La risposta di Paolo non è sbagliata, ma non è l’unica parte della storia

Sarà necessario eseguire ciascuna di queste fasi per assicurarsi di ottenere risultati coerenti;

IMPORTANTE: questi passaggi devono essere eseguiti su ogni singola pagina dell’applicazione Web o si riscontreranno problemi (sottolineato dal commento di Paul).

  1. Ogni pagina deve essere salvata utilizzando la codifica UTF-8 verifica che alcuni IDE vengano impostati automaticamente su Windows-1252 .
  2. Ogni pagina avrà bisogno della seguente riga aggiunta come prima riga della pagina, per semplificare questo lo metto insieme ad altri valori in un file di inclusione così posso includerli in ogni pagina mentre vado.

    Includi file – page_encoding.asp

     <%@Language="VBScript" CodePage = 65001 %> <% Response.CharSet = "UTF-8" Response.CodePage = 65001 %> 

    Utilizzo nella parte superiore di una pagina ASP (preferire inserire una cartella di configurazione nella directory principale del Web)

      

    Response.Charset = "UTF-8" è l’equivalente dell’impostazione di ;charset nell’intestazione del content-type HTTP. Response.CodePage = 65001 ASP per elaborare tutte le stringhe dinamiche come UTF-8 .

  3. Anche i file includi nella pagina dovranno essere salvati usando la codifica UTF-8 (controlla anche questi).

Segui questi passaggi e la tua pagina funzionerà, il tuo problema al momento è che alcune pagine vengono interpretate come Windows-1252 mentre altre sono trattate come UTF-8 e finisci con un’errata corrispondenza nella codifica.

Normalmente – e questa parola ha un allungamento molto lungo – non hai bisogno di convertire a portata di mano, ancora di più è scoraggiato. In cima alla tua pagina asp scrivi:

 <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> 

che dice ASP per inviare e ricevere (da un punto di vista del server) UTF-8. Inoltre istruisce l’interprete a utilizzare stringhe di 2 byte. Quindi, quando si scrive su un database o si legge da un database, tutto diventa auto magicamente, quindi se il tuo database usa 1 byte char o 2 byte le conversioni nchar sono prese in considerazione. E in realtà questo è tutto. Puoi testare se tutto va bene testando con questo set:

  áäÇçéčëíďńóöçÖöÚü 

Questo set contiene alcuni caratteri “europei” ma anche alcuni “Unicode” … quelli Unicode falliranno sempre se si utilizza la codepage 1252, quindi è un bel set di test.