Comment changer une base de données Access d'ISO-8859-2 à UTF-8 dans une chaîne de connexion?
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?
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.