使用ASP从MySQL读取泰语字符

时间:2013-11-18 09:05:56

标签: mysql utf-8 asp-classic

我在MySQL中有泰语字符但是它们没有正确地转移到我生成的ASP页面。我已经链接到关键因素的屏幕截图,显示数据在表中是正常的,但在上一个屏幕截图中看不到网站上的数据。我有什么想法我做错了吗?

http://www.transum.com/Temp/ThaiScript.PNG

  • 前两张图片来自phpMyAdmin
  • 第三张图片是我网页的标题。
  • 第四张图片显示了网页上显示的内容。

我已经在连接中添加了UTF-8指令:

Conn.execute ("SET NAMES utf8")
SQL = "select * from Phrases WHERE Checked = TRUE Order by English ASC"
set RSrecord = Conn.execute (SQL)
Response.CharSet = "utf-8"

2 个答案:

答案 0 :(得分:0)

在没有看到更多来源的情况下,我的第一个问题(或建议)是您是否对输出进行HTML编码?

Response.Write Server.HTMLEncode(RSrecord.Fields("Thai_Script"))

如果这对您不起作用,您可以显示更多代码吗?

答案 1 :(得分:0)

我想我已经解决了这个问题。首先,我应该重复一遍,如果您可以安装MyODBC v5.1,那么这样做并且不用费心去尝试配置3.51。不幸的是,似乎旧的驱动程序是某个大型知名网站主机似乎提供的所有内容。

这是我俄语西里尔语版页面的链接。它使用旧驱动程序,(MyODBC 3.51)

http://clubdanceholidays.co.uk/aboutusruansi.asp

需要注意的关键点是:

1)在第一行:

<%@ LANGUAGE="VBSCRIPT" CODEPAGE="1252" LCID="2057" %>

使用1252而不是65001作为您的代码页值 - 我意识到这是多么违反直觉,但在这种特定情况下它是有效的。

2)你的行

Conn.execute ("SET NAMES utf8")

在查询之前立即添加此查询以填充我的记录集是我的拼图缺失部分。

3)Charset元标记

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

这绝对应该是UTF-8。基本上我们告诉服务器它是一个Windows-1252页面,浏览器是UTF-8页面。

4)保存文件时要使用哪种编码

这有点复杂。如果您使用的是记事本,则需要使用ANSI。 UTF-8选项实际上是UTF-8 + BOM,它似乎与第1点中的代码页定义产生冲突。如果您需要将任何非西方字符硬编码到您的页面中,则会出现ANSI的问题 - 您不能按原样插入它们,您需要先对它们进行手动编码,例如,对于เครื่องบิน,您需要插入เàà“รà¸ààààààà¸à¸¸¸à¸™™

如果你有一个比记事本更强大的编辑器,(我使用Editplus - http://www.editplus.com/ - 它不是免费的,但它很便宜)你可能会找到两个UTF-8选项。选择没有BOM的那个。