我在MySQL中有泰语字符但是它们没有正确地转移到我生成的ASP页面。我已经链接到关键因素的屏幕截图,显示数据在表中是正常的,但在上一个屏幕截图中看不到网站上的数据。我有什么想法我做错了吗?
http://www.transum.com/Temp/ThaiScript.PNG
我已经在连接中添加了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"
答案 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的那个。