【发布时间】:2015-04-28 02:25:49
【问题描述】:
我有一个旧网站,访问者可以在其中添加他们的 cmets。到目前为止,它一直运作良好,它没有很多访客(它是针对小众受众的)。它是用经典的 ASP 构建的,它使用 MySQL(现在是 5.6)。它在 IIS 8.5 上运行,并且在没有 DSN 的情况下连接到数据库。
每当有人在他们的帖子中添加表情符号时,它都会使 IIS 服务进入某种循环使用超过 60% 的 CPU 并且永不停止。
我不想过滤掉这些字符,我认为它们很符合网站的前提,但是我没有预见到这个问题。当我第一次设置 MySQL 时,我使用 UTF-16 来确保我的用户可以用任何语言编写,直到现在我从未遇到过问题。有看起来像日语和韩语的消息,当用户告诉我当网站崩溃时他在做什么时,我才发现这是表情符号的问题。
- 网站的所有页面/文件都以 Unicode 格式保存,并且所有这些页面/文件的字符集都设置为“utf-8”。
- 数据库的排序规则是 utf16_unicode_ci,表也是。
- 我可以直接从命令行或通过 HeidiSQL 将表情符号插入表中,但是......
- 服务器将表情符号作为问号 (?) 发送。
这是我的连接字符串:
驱动程序={MySQL ODBC 5.3 Unicode Driver};Server=...;User=******;Password=** ****;Option=3;charset=utf16;
【问题讨论】:
-
请提供
SHOW CREATE TABLE和SELECT col, HEX(col) ...用于显示不正确的内容。 -
瑞克,我什么都试过了,几个小时后我就放弃了。我用 PHP 编写了一个小脚本,只是为了测试 VBScript 代码在做什么,并且正如我所期望的那样完美地工作。所以我决定用 PHP 重写整个站点并将其移动到 Apache 服务器。我仍然不知道到底是什么问题,我最好的猜测是 ODBC 驱动程序是这里的坏人。
-
嗯...我没注意到“utf16”。我怀疑这是问题的一部分。
标签: mysql unicode asp-classic utf-16 emoji