J'ai une base de données MySQL qui doit être accessible à la fois par PHP et MySQL, cela fonctionne bien dans la plupart des cas, mais certains caractères "spéciaux", par exemple. les guillemets doubles, les apostrophes ne s'affichent pas correctement dans les scripts ASP. Par exemple, la base de données MySQL provient d'une installation Drupal et contient une table avec un champ contenant le texte "A double quote" (les guillemets sont des guillemets intelligents mais ne semblent pas apparaître au débordement de la pile). Cela s'affiche correctement dans un script PHP, mais pas un script ASP. J'ai écrit un script simple à la fois PHP et ASP en boucle à travers la chaîne et imprimer les codes de caractères ici sont les sorties:Caractères Unicode dans MySQL retournant différentes valeurs de code de caractères en PHP et ASP
PHP
“ 147
A 65
32
d 100
o 111
u 117
b 98
l 108
e 101
32
q 113
u 117
o 111
t 116
e 101
” 148
ASP
� 8220
A 65
32
d 100
o 111
u 117
b 98
l 108
e 101
32
q 113
u 117
o 111
t 116
e 101
� 8221
Comme vous pouvez voyez, les guillemets doubles sortent comme des caractères différents dans PHP et ASP, et ceux d'ASP ne sont pas rendus correctement. Je cours MySQL 5 sur une machine Windows en utilisant une installation Drupal standard avec PHP 5. ASP utilise le pilote MySQL ODBC 3.51 et je ne suis pas en cours d'exécution d'autres commandes en PHP ou ASP, sauf pour ouvrir une connexion et Exécutez l'instruction select.
Modifier Comme demandé ici est le script asp
Dim strConn, objConn, objRS, strQ
Dim i, strBody
strConn = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=" & strDBServer & "; DATABASE=studential; UID=" & strDBUser & ";PASSWORD=" & strDBPass & "; OPTION=3"
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open(strConn)
strQ = "select body from drupal_node_revisions where nid = 261"
Set objRS = objConn.Execute(strQ)
strBody = objRS("body")
For i = 1 To len(strBody)
Response.write(Mid(strBody, i, 1) & " " & AscW(Mid(strBody, i, 1)) & "<br />")
Next
objRS.Close
objConn.Close
Set objRS = Nothing
Set objConn = Nothing
modifier plus
Lors du remplacement du AscW avec Asc dans la ligne ci-dessous:
Response.write(Mid(strBody, i, 1) & " " & AscW(Mid(strBody, i, 1)) & "<br />")
Les codes de caractères correspondent maintenant, mais les caractères de citation affichent encore incorrctly. Ma page contient le tag charset utf-8, donc il se peut que ce soit quelque chose avant qui n'utilise pas l'encodage utf-8 - des idées de ce que c'est ou comment je peux le réparer?
Merci pour votre aide,
Tom
J'ai ajouté le script ASP à la question originale - merci, Tom – Loftx
AscW() vous donnerait le caractère unicode, je devine qu'il convertit l'entrée char 147 et traduit en unicode. Que se passe-t-il si vous utilisez Asc()? C'est difficile à dire, mais je vais deviner que votre script ASP dit au navigateur d'obtenir UTF-8, et vous passez Latin1. –
Salut Paul, tu as raison quand je le remplace par Asc les codes apparaissent les mêmes. Des idées que je pourrais avoir besoin de changer dans mon script pour passer utf-8 au lieu de latin1? – Loftx