如何在连接字符串中将Access DB从ISO-8859-2更改为UTF-8?
时间:2020-03-05 18:55:44 来源:igfitidea点击:
我有一个ISO-8859-2格式的数据库,但是我需要以UTF-8创建XML。这意味着我必须在使用UTF-8进行prinitng之前对数据库进行编码。我对ASP.Net知之甚少,所以希望有人能提供帮助。
在PHP中,我将执行以下操作:
db_connect();
mysql_query("SET NAMES 'UTF8'");
mysql_query("SET character_set_client='UTF8'");
这是我用于数据库连接的ASP.Net代码:
'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()
我在哪里以及如何编码为UTF-8?
解决方案
回答
.NET Framework的内部字符串类型为UTF-16. 所有数据库访问都将转换为UTF-16,以便我们可以适当地查看数据:数据库或者OLE DB提供程序将转换为UTF-16.
然后,XML writer类(我们正在使用XmlDocument或者XmlWriter,对吗?)将在输出上转换为UTF-8.
基本上,我们不需要执行任何其他操作。
回答
假设我们在str中有一个值字符串,这就是纯.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);

