如何在连接字符串中将 Access DB 从 ISO-8859-2 更改为 UTF-8?

Posted

技术标签:

【中文标题】如何在连接字符串中将 Access DB 从 ISO-8859-2 更改为 UTF-8?【英文标题】:How would I change an Access DB from ISO-8859-2 to UTF-8 in a connection string? 【发布时间】:2008-09-16 12:06:26 【问题描述】:

我有一个 ISO-8859-2 格式的数据库,但我需要创建 UTF-8 格式的 XML。这意味着我必须在以 UTF-8 打印之前对数据库进行编码。我对 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?

【问题讨论】:

【参考方案1】:

假设您在 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);

【讨论】:

【参考方案2】:

.NET Framework 的内部字符串类型是 UTF-16。所有数据库访问都将转换为 UTF-16,以便您可以适当地查看数据:数据库或 OLE DB 提供程序将转换为 UTF-16。

XML 编写器类(您正在使用 XmlDocument 或 XmlWriter,对吗?)然后将在输出中转换为 UTF-8。

基本上,您不需要做任何额外的事情。

【讨论】:

以上是关于如何在连接字符串中将 Access DB 从 ISO-8859-2 更改为 UTF-8?的主要内容,如果未能解决你的问题,请参考以下文章

获取从 PHP ADO 连接返回到 MS-Access DB 的 JSON

如何在 64 位窗口中将 R 与 Access 数据库连接?

如何从 Spring JdbcTemplate 连接到受密码保护的 MS Access 数据库?

关于从 access db 到 Azure SQL 的 ODBC 连接

JET OLEDB 参数如何将字符串与 Access DB 中的文本字段进行比较

如何自动断开空闲用户与 MS Access DB 的连接?