如何在连接字符串中将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);