Pourquoi utiliser ADODB.Stream avec le jeu de caractères ASCII des caractères spéciaux comme ä sont convertis?
Je vais avoir un problème en essayant de sortie le contenu de certaines variables dans vb6 dans un fichier texte. Le truc, c'est que lorsqu'un caractère spécial de ASCII étendu apparaît comme ä, ü, á il est transformé dans la sortie de la correspondance des caractères ASCII de base char comme a, u,.
J'ai essayé de l'exporter comme UTF-8, puis le caractère s'affiche correctement, mais j'ai besoin de la sortie ASCII. Aussi, semble étrange pour moi que le nom de fichier peut normalement contenir cette caractères (ä, ü, á...) sans sustitution.
Cela peut-être parce que "ASCII" charset est juste la base et non pas l'étendue? Peut-être parce que les pages de code configuré dans Windows? J'ai essayé avec un couple d'entre eux (allemand, anglais) avec le même résultat.
C'est le code que j'utilise:
Set fileStream = New ADODB.Stream
If Not fileStream Is Nothing Then
inputString = textPreAppend + inputString
fileStream.charSet = "ASCII"
fileStream.Open
fileStream.WriteText inputString
fileStream.Flush
fileStream.SaveToFile fileName, adSaveCreateOverWrite
fileStream.Flush
fileStream.Close
End If
Set fileStream = Nothing
Merci d'avance!
- Pour référence, "ascii" se réfère dans ce cas à iso8859-1/page de codes 1252.
- Bon à savoir Deanna, je pense que je peut parlé de jeux de caractères. Je viens de faire un test et je l'ai décochée, le jeu de caractères 20127 (US-ASCII) qui je pense est le code ASCII de base, et le fichier de sortie est complètement vide. Je pense que cela prouve que je suis en utilisant le code ASCII de base au lieu de l'étendue (1252), mais ce code est sélectionné dans les paramètres régionaux. J'ai peut-être de force à l'intérieur du code?
Vous devez vous connecter pour publier un commentaire.
Les deux PRB: jeu de caractères de la Propriété de l'Objet ADO Stream Peuvent Exiger de Microsoft Internet Explorer Mise à niveau et Propriété Charset (ADO) suggèrent que ADO CharSet valeurs sont celles répertoriées dans la liste
HKEY_CLASSES_ROOT\MIME\Database\Charset
mais qui, manifestement, n'est pas toute l'histoire.Par exemple, les deux valeurs "ascii" et "us-ascii" y sont répertoriés en tant qu'alias de "iso-8859-1" cependant en cours d'exécution avec mes paramètres régionaux définis à l'anglais des états-UNIS, ils agissent comme un ASCII 7 bits type MIME. Ils avaient presque, car il n'y a rien d'autre de prévu pour la demande de l'ASCII 7 bits de codage, de toute façon.
Ce qui produit le résultat que vous semblez vouloir:
De sortie:
Nous devons supposer que demander de "ascii" (les valeurs sont toutes mises en minuscule si clairement ne sont pas sensibles à la casse) signifie ASCII 7 bits, peut-être localisée.
L'utilisation de l'UTF-8 est une mauvaise idée, sauf si vous voulez UTF-8. Alors que beaucoup de systèmes *nix, faire semblant il n'y a pas de différence, le Flux d'écrire une NOMENCLATURE et, bien entendu, ceux étendu (non ASCII) les caractères sont codés sur plusieurs octets.
Pourquoi ne pouvez-vous pas tout simplement faire quelque chose comme ce qui suit? Ceci fonctionne bien pour moi: