所以我在正确转换法语字符时遇到问题。基本上,我有一个将数据发送到SQL数据库的表单。然后,在另一页上,从该数据库中检索数据并显示给用户。但是数据(字符串)显示的字符却很奇怪,因为另一页上的表单输入是法语。我通过使用以下将字符串转换为正确字符集的函数克服了这个问题。但是,显然更好的解决方案是先将其转换,然后将其发送到数据库。现在,这里是将从数据库检索到的字符串转换为适当字符集的代码:
Function ConvertFromUTF8(sIn) Dim oIn: Set oIn = CreateObject("ADODB.Stream") oIn.Open oIn.CharSet = "WIndows-1252" oIn.WriteText sIn oIn.Position = 0 oIn.CharSet = "UTF-8" ConvertFromUTF8 = oIn.ReadText oIn.Close End Function
现在我的问题是,我应该使用什么函数来预先转换字符串,然后将其发送到数据库,以便在我检索它们时可以使用?
尝试过保罗的方法:
因此,有第1页和第2页。第1页包含一种表单,提交后将其发送到DB,然后在第2页中检索该字符串。我尝试了Paul的解决方案,方法是删除函数ConvertFromUTF8并将其保留为以前的样子(它返回了奇怪的芒果字符)。之后,我在第1页和第2页的顶部添加了以下行。
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
在这两个页面上我也都有以下内容:
Response.CodePage = 65001 Response.CharSet = "UTF-8"
但这没有用:(
编辑:它有效!,非常感谢大家的帮助! 我需要做的就是在第3页的顶部添加“ CodePage = 65001”(我什至没有谈论过),在该处正在写DB部分。
保罗的回答没错,但这不是故事的唯一部分
您将需要执行以下每个步骤,以确保获得一致的结果。
重要说明: 这些步骤必须在Web应用程序的每个页面上执行,否则您将遇到问题(以Paul的评论为重点)。
UTF-8
Windows-1252
<%@Language="VBScript" CodePage = 65001 %> <% Response.CharSet = "UTF-8" Response.CodePage = 65001 %>
在ASP页顶部的用法(最好放在Web根目录的config文件夹中)
<!-- #include virtual="/config/page_encoding.asp" -->
Response.Charset = "UTF-8"等效;charset于在HTTPcontent-type标头中设置。 Response.CodePage = 65001告诉ASP将所有动态字符串处理为UTF-8。
Response.Charset = "UTF-8"
;charset
content-type
Response.CodePage = 65001
请按照以下步骤操作,您的页面将正常工作,当前的问题是某些页面被解释为页面,Windows-1252而另一些页面被视为页面,UTF-8最终导致编码不匹配。