当前位置: 首页 > 面试题库 >

将UTF-8字符串经典ASP转换为SQL数据库

安泰平
2023-03-14
问题内容

所以我在正确转换法语字符时遇到问题。基本上,我有一个将数据发送到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的评论为重点)。

  1. 每个页面都需要使用编码进行 保存,UTF-8请仔细检查,因为某些IDE会默认使用它Windows-1252(通常也被误命名为“ ANSI”)。
  2. 每个页面都需要在页面的第一行中添加以下行,为使此操作更容易,我将其与其他一些值一起包含在包含文件中,以便在进行过程中可以将它们包含在每个页面中。

包含文件-page_encoding.asp

    <%@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

  1. 页面中的包含文件也必须使用编码 保存UTF-8(也请仔细检查)。

请按照以下步骤操作,您的页面将正常工作,当前的问题是某些页面被解释为页面,Windows-1252而另一些页面被视为页面,UTF-8最终导致编码不匹配。



 类似资料:
  • 问题内容: 从我的数据库即时通讯获取以下字符串: 它应该说的是: 我试图像这样将其转换为utf-8: 但是仍然是同样的问题。 有任何想法吗? 问题答案: 使用npm中的utf8模块对字符串进行编码/解码。 安装: 在浏览器中: 在Node.js中: API: 编码: 将任何给定的JavaScript字符串(字符串)编码为UTF-8,并返回该字符串的UTF-8编码版本。如果输入字符串包含非标量值(即

  • 问题内容: 我需要将unicode字符串转换为具有以unicode编码的非ascii字符的字符串。例如,字符串“汉字Max”应显示为“ \ u6F22 \ u5B57 Max”。 我尝试过的 的不同组合 新的String(sourceString.getBytes(encoding1),encoding2) Apache StringEscapeUtils也会转义ascii字符,例如双引号 Str

  • 问题内容: 如何在Swift中将字符串转换为Unicode(UTF-8)字符串? 在Objective中,我可以这样写: 如何在Swift中做类似的事情? 问题答案: 使用此代码, 希望对您有所帮助

  • 我有一个从第三方应用程序收到的字符串,我希望在我的Windows界面上使用C#以任何语言正确显示它。 由于编码不正确,我的字符串中有一段在西班牙语中如下所示: AcciÃn 然而它应该看起来像这样: 阿克松 根据这个问题的答案:如何知道C#中的字符串编码,我接收到的编码应该已经在UTF-8中出现了,但它是在编码时读取的。默认值(可能是ANSI?)。 我试图将这个字符串转换成真正的UTF-8,但问题

  • 使用CAST(作为XML)转换XML字符串在许多情况下都能正常工作,但如果字符串包含重音字符,则会出现错误“非法XML字符”。 结果: 此外,同样的XML但是UTF-16编码,莫名其妙地工作: 结果: 这些字符在UTF-8中是非法的吗?还是有更好的方法转换成XML数据类型?

  • 问题内容: 我无法在Android中将字符串转换为UTF-8。请帮我!! 结果: 但是“ ”应该编码为“ ” 问题答案: 在http://developer.android.com/reference/java/net/URLEncoder.html中,您可以了解到您使用的已弃用,应该使用 所以应该做到这一点。