我有一个旧网站,访问者可以在其中添加评论。到目前为止,它一直运作良好,访客不多(针对小众受众)。它是用经典 ASP 构建的,并使用 MySQL(现在是 5.6)。它在 IIS 8.5 上运行,无需 DSN 即可连接到数据库。
每当有人在帖子中添加表情符号字符时,都会使 IIS 服务进入某种循环,使用超过 60% 的 CPU,并且永远不会停止。
我不想过滤掉这些字符,我认为它们非常适合网站的前提,但我没有预见到这个问题。当我第一次设置 MySQL 时,我使用 UTF-16 来确保我的用户可以用任何语言编写,直到现在我才遇到过问题。有一些看起来像日语和韩语的消息,当一位用户告诉我他在网站崩溃时他在做什么时,我才发现这是表情符号的问题。
这是我的连接字符串:
驱动程序={MySQL ODBC 5.3 Unicode 驱动程序};服务器=...;用户=******;密码=******;选项=3;字符集=utf16;
在
CHARACTER SET utf8mb4
中端到端使用 MySQL
。
作为一名经典 ASP 开发人员,我已经发布了这个问题的答案,使得能够从 MySQL/MariaDB 数据库中正确且成功地读回表情符号(以及 BMP 之外的 4 字节字符) .
希望这有帮助!