Comment changer une base de données Access d'ISO-8859-2 à UTF-8 dans une chaîne de connexion?

StackOverflow https://stackoverflow.com/questions/71578

  •  09-06-2019
  •  | 
  •  

Question

J'ai une base de données au format ISO-8859-2, mais je dois créer du XML en UTF-8. Cela signifie que je dois encoder la base de données avant d'imprimer en UTF-8. Je connais très peu d'ASP.Net, j'espère donc que quelqu'un pourra vous aider.

En PHP, je ferais quelque chose comme ceci:

db_connect();
mysql_query("SET NAMES 'UTF8'");
mysql_query("SET character_set_client='UTF8'");

Ceci est mon code ASP.Net pour la connexion à la base de données:

 'CONNECTION TO DATABASE
 dim dbconn,sql,dbcomm
 dbconn=New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & Server.MapPath("../baze/test.mdb"))

 dbconn.Open()          

 sql="SELECT * FROM nekretnine, tipovinekretnina WHERE nekretnine.idtipnekretnine = tipovinekretnina.idtipnekretnine ORDER BY nekretnine.idnekretnine"
 dbcomm=New OleDbCommand(sql,dbconn)
 dbread=dbcomm.ExecuteReader()

 while dbread.Read()

Où et comment puis-je encoder en UTF-8?

Était-ce utile?

La solution

En supposant que vous ayez une chaîne de valeur dans str , il s’agit de la méthode la plus pure.NET.

var encoding = System.Text.Encoding.GetEncoding("iso-8859-2");

var bytes = System.Text.Encoding.Convert(encoding, System.Text.Encoding.Default, encoding.GetBytes(str));

var newString = System.Text.Encoding.Default.GetString(bytes);

Autres conseils

Le type de chaîne interne du .NET Framework est UTF-16. Tous les accès à la base de données seront convertis au format UTF-16 afin que vous puissiez afficher les données correctement: la base de données ou le fournisseur OLE DB sera converti au format UTF-16.

Les classes d'écriture XML (vous utilisez en utilisant XmlDocument ou XmlWriter, n'est-ce pas?) seront ensuite converties en UTF-8 à la sortie.

En gros, vous ne devriez avoir besoin de rien faire d’autre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top