ASP,MySQL和UTF-8

时间:2012-12-21 17:39:22

标签: mysql asp-classic utf-8 odbc

首先,我已经阅读了几乎所有关于此的主题。我已经尝试了所有的建议,但我无法解决这个问题。

这是事情。我将Classic ASP和MySQL用于项目。一切都很好。如果我写(例子)Response.Write(“ĞŞÜÇÖİ”)它就像一个魅力。但如果该字符串来自数据库,我会看到“ÄÅÜÇÃÄ°”而不是“ĞŞÜÇÖİ”。当我用phpMyAdmin看这个时,没关系。

我使用的是Dreamweaver CS6。我保存所有页面Unicode(UTF-8)。我在一个包含文件中写了Session.CodePage = 65001,Response.CodePage = 65001,Response.Charset =“utf-8”,每个页面都将它放在顶部。我写过meta charset utf-8。我使用ODBC 5.2 x64驱动程序,我的连接字符串有charset:UTF8;。并且所有MySQL设置都是utf-8(表格,字段,所有内容)。

好吧,我不想使用其他编码,字符集。我做错了什么?看来,这是关于数据库的。有什么问题?

2 个答案:

答案 0 :(得分:2)

您需要使用charset参数指定连接字符串中的字符集;见MySQL ODBC doco。例如添加“charset = utf8;”“charset = ucs2;”连接字符串。

编辑:我终于有机会在这上面运行一个简单的测试工具,并且确实因charset = utf8而失败。但是,由于VBScript在内部运行UCS2,我尝试使用charset = ucs2,它运行正常。注意:页面仍设置为以UTF-8发送所有输出,只是VBScript使用UCS2从ODBC连接中提取数据。工作完成了:)

答案 1 :(得分:0)

即使你的连接应该是UTF8。在运行其他查询之前运行此查询

set names 'utf8'
  

SET NAMES表示客户端将用于发送SQL的字符集   语句到服务器。因此,SET NAMES'cp1251'告诉服务器,   “来自此客户端的未来传入消息是字符集   cp1251。“它还指定了服务器应该使用的字符集   用于将结果发送回客户端。 (例如,它表明   如果使用SELECT,则用于列值的字符集   语句。)

SET NAMES'x'语句相当于这三个语句:

SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;

仅供参考:manual