【问题标题】:How to convert MS Access database encoding to UTF-8?如何将 MS Access 数据库编码转换为 UTF-8?
【发布时间】:2011-03-07 17:08:28
【问题描述】:
我目前正在开发一个传统的 Classic ASP + MS-Access 应用程序。我最近将所有 .asp 文件从 ISO-8859 (Windows) 编码转换为 UTF-8。
我现在遇到的问题是存储在数据库中的文本(带有重音字符的法语)在网页中呈现时显示不正确,因为编码不一致。如何将我的 MS Access 数据库编码从 ISO-8859 转换为 UTF-8?
【问题讨论】:
标签:
ms-access
asp-classic
character-encoding
【解决方案1】:
如何将我的 MS Access 数据库编码从 ISO-8859 转换为 UTF-8?
你不知道。 Access 可以处理 Unicode 文本,但它不会将其存储为 UTF-8。有一些方法可以将 UTF-8 编码的文本直接插入 Access Text 字段,但这会导致奇怪的行为,如我的其他答案 here 所示。
对于 ASP 应用程序,只需使用编码为 UTF-8 的 .asp 页面,告诉 IIS 产生 UTF-8 输出(通过<%@ CODEPAGE = 65001 %> 指令),然后让 IIS 和 Access OLEDB 驱动程序处理“Access Unicode”和 UTF-8。
有关 Access、Classic ASP 和 UTF-8 的详细示例,请在此处查看我的答案:
Capture and insert Unicode text (Cyrillic) into MS access database
重要提示
请注意,您不应将 Access 数据库用作 Web 应用程序的后端数据存储; Microsoft强烈建议不要这样做(参考:here)。
【解决方案3】:
我最终使用 Server.HTMLEncode 来处理来自我的数据库的文本。它完全破坏了我存储在那里的所有 HTML 代码,所以我必须编写一个丑陋的 hack 以避免将 html 标记转换为 html 安全字符串。它现在可以工作了,但它肯定不是最优雅的解决方案......
【解决方案4】:
您可以在 Access 2000 中执行此操作。
右键单击要转换的表。
选择“导出”
在“保存类型”下拉列表中选择“文本文件 (.txt;.csv;.tab;.asc)”,输入导出的名称文件并按“保存”
选择分隔并按“高级”
在“语言”列表中选择“全部”,在“代码页”列表中选择“Unicode (UTF-8)”
在此处更改所需的任何其他设置
按“确定”,按“下一步”并选择您的分隔符。选中在第一行中包含字段名称的选项
按“下一步”,确认新文件的目标文件夹,然后单击“完成”
下一阶段是重新导入保存的文件:
选择文件、获取外部数据、导入
在“文件类型”下拉列表中选择“文本文件 (.txt;.csv;.tab;.asc)”
导航到保存的文本文件并按导入
指定分隔符并按“下一步”
指定分隔符并按“下一步”
按“高级”按钮,再次在“语言”列表中选择“全部”,然后在“代码页”中选择“Unicode (UTF-8)”
选择单选按钮以保存在新表中,然后按“下一步”
选择“无主键”的单选按钮(否则,Access 将插入一个 ID 字段作为表中的第一个字段,您可能不希望这样做)
点击“下一步”,勾选导入的表名,点击“完成”
注意:
您必须编辑新表以为其指定字段名称,但如果您导出它们,这些名称应该在第一条记录中。
Access 会将数字类型自动分配给导入的布尔类型和日期类型,因此您可能需要更改这些