使用经典 ASP 导致 MySQL 崩溃的表情符号

问题描述 投票:0回答:2

我有一个旧网站,访问者可以在其中添加评论。到目前为止,它一直运作良好,访客不多(针对小众受众)。它是用经典 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 驱动程序};服务器=...;用户=******;密码=******;选项=3;字符集=utf16;

mysql unicode asp-classic utf-16 emoji
2个回答
0
投票

CHARACTER SET utf8mb4
中端到端使用
MySQL


0
投票

作为一名经典 ASP 开发人员,我已经发布了这个问题的答案,使得能够从 MySQL/MariaDB 数据库中正确且成功地读回表情符号(以及 BMP 之外的 4 字节字符) .

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.