Wenn es einen Eingang oder Ausgang auf einer ASP-Seite ist this sort of thing funktioniert wie ein Zauber:ASP classic: Was bestimmt die Zeichencodierung für ADODB?
<%@ LANGUAGE="VBScript" CodePage = 65001 %>
<%
Response.CharSet = "UTF-8"
Response.CodePage = 65001
%>
Aber wenn es eine ASP-Seite ausgeführt wird reines VBS und gebe ich eine nicht-lateinische Zeichenkette als Parameter an einer MS SQL-Sproc über Server.CreateObject("ADODB.Command")
dann ist es in eine Reihe von ?
Zeichen irgendwo zwischen, wenn der Befehl ausgeführt wird und MS SQL setzt es in eine Varchar-Spalte.
Allerdings habe ich eine Instanz von IIS, auf der die gleichen ASP-Seiten solche Zeichenfolgen in die Datenbank mit UTF-8-Codierung einfügen. Da ich die IIS-Einstellung nicht finden kann, die das funktioniert, wie kann ich einen ADODB.Command Parameter-Wert in UTF-8 konvertiert werden?
Wenn Sie UTF-8-codierte Zeichen an SQL Server übergeben, sollten sie in einer 'NVARCHAR'-Spalte und nicht in einem' VARCHAR' platziert werden, was die nicht übereinstimmende Kodierung erklärt. Parameterweise sollten Sie den Datentyp 'adVarWChar' bzw.' adLongVarWChar' verwenden. – Lankymart
@Lankymart - Ich werde jetzt mit diesem ADO-Datentyp-Flag testen. Ich weiß, dass die DB-Spalte * sollte * ein NVARCHAR sein, aber es ist ein Altsystem. Jeder Einblick in [wie die gleiche Datenbank und derselbe Code UTF-8-codierte Strings empfangen haben könnten, wenn der ASP von einem anderen IIS-Server ausgeführt wird] (http://serverfault.com/q/796971/350508)? – feetwet
Interessante Frage, ist der gleiche Anbieter auf beiden Servern verwendet? Es hängt auch vollständig davon ab, was die Seite tut, d. H. Daten aus einem Formular zu veröffentlichen. – Lankymart