我目前正在开发一个传统的经典ASP + MS-Access应用程序。最近我把所有的.asp文件从ISO-8859(Windows)编码转换为UTF-8。
我现在遇到的问题是,由于编码不一致,数据库中存储的文本(带重音字符的法语)在网页中显示不正确。如何将MS Access数据库的编码从ISO-8859转换为UTF-8?
如何将我的MS Access数据库编码从ISO-8859转换为UTF-8?
你不需要。 Access可以处理Unicode文本,但它不会将其存储为UTF-8。有一些方法可以直接将UTF-8编码的文本插入到Access中。Text
字段,但这导致了奇怪的行为,正如我的另一个答案所说明的那样 此处.
对于一个ASP应用程序,只需使用.asp页面编码为UTF-8,告诉IIS产生UTF-8输出(通过 <%@ CODEPAGE = 65001 %>
指令),让 IIS 和 Access OLEDB 驱动程序处理 "Access Unicode "和 UTF-8 之间的转换。
关于Access、Classic ASP和UTF-8的详细例子,请看我的回答。
捕获并将Unicode文本(西里尔语)插入MS access数据库中。
重要提示
请注意,您不应该使用 Access 数据库作为 Web 应用程序的后端数据存储;Microsoft 强烈建议不要 这样做 这里).
您也许可以编写一条使用StrConv函数将文本转换为Unicode的Access UPDATE语句。
请看 http:/www.techonthenet.comaccessfunctionsstringstrconv.php
我最终使用Server.HTMLEncode来处理数据库中的文本。它完全破坏了我存储在数据库中的所有HTML代码,所以我不得不写了一个丑陋的黑客来避免将html标签转换为html安全字符串。现在它的工作,但它肯定不是最优雅的解决方案......
你可以在Access 2000中这样做。右击你要转换的表。选择 "导出" 在 "保存类型 "下拉列表中选择 "文本文件(.txt;.csv;.txt; .cv; .tab;.asc)",为导出的文件输入一个名称,然后按 "保存 "选择分隔符,并按 "高级 "在 "语言 "列表中选择 "全部",在 "代码页 "列表中选择 "Unicode (UTF-8) "在这里改变任何其他你想要的设置按 "确定",按 "下一步 "并选择你的分隔符。勾选 "在第一行中包含字段名 "选项,按 "下一步",确认新文件的目标文件夹,然后点击 "完成"。
下一阶段是重新导入保存的文件。选择文件,获取外部数据,导入 在 "文件类型 "下拉列表中选择 "文本文件(.txt;.csv;.txt; .cv; .txt;.asc)" 导航到已保存的文本文件并按 "导入" 指定分隔符并按 "下一步" 指定分隔符字符并按 "下一步" 按 "高级 "按钮,再次在 "语言 "列表中选择全部。并在 "代码页 "中选择 "Unicode (UTF-8) "选择单选按钮保存在新表中,并按 "下一步 "选择 "无主键 "的单选按钮(否则,Access将插入一个IDfield作为表的第一个字段,这可能是你不想要的)点击 "下一步",选中导入表的名称,并点击 "完成"
注意:你必须编辑新表,给它起字段名,但如果你导出了这些字段名,这些字段名应该在第一条记录中。
您必须编辑新表,为其指定字段名,但如果您导出了这些字段名,这些字段名应该在第一条记录中。
Access 会自动将 Number 类型分配给导入的 Boolean 类型和 Date 类型,因此您可能需要更改这些类型。